引言
NumPy是Python中用于科学计算的核心库,它提供了强大的n维数组对象,以及用于处理这些数组的工具。NumPy的数组(numpy.array)比Python的内置列表更高效,因为它们在内存中以连续的方式存储,这使得计算速度更快,尤其适合大规模数据处理。在预测建模中,NumPy是不可或缺的工具之一。本文将详细介绍如何使用NumPy进行预测建模,并通过实战案例进行解析。
NumPy基础
1. 安装与导入
首先,确保你已经安装了NumPy库。可以使用以下命令进行安装:
pip install numpy
然后,在Python代码中导入NumPy库:
import numpy as np
2. 创建数组
NumPy提供了多种创建数组的方法,包括:
np.array()
:创建一个NumPy数组。np.zeros()
:创建一个全零数组。np.ones()
:创建一个全一数组。np.full()
:创建一个指定值填充的数组。
3. 数组操作
NumPy提供了丰富的数组操作功能,包括:
- 索引和切片:与Python列表类似。
- 数组运算:支持元素级运算。
- 索引和条件选择:使用布尔索引选择数组中的元素。
预测建模实战案例
1. 房价预测
数据准备
首先,我们需要准备数据。以下是一个房价预测的数据集示例:
data = {
'area': [1000, 1500, 2000, 2500, 3000],
'bedrooms': [3, 4, 3, 4, 3],
'price': [200000, 300000, 250000, 350000, 400000]
}
df = pd.DataFrame(data)
特征工程
接下来,我们需要对数据进行特征工程。这里,我们将使用NumPy进行数据标准化:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df[['area', 'bedrooms']] = scaler.fit_transform(df[['area', 'bedrooms']])
模型构建
现在,我们可以使用NumPy构建一个简单的线性回归模型:
X = df[['area', 'bedrooms']]
y = df['price']
X = np.array(X)
y = np.array(y)
# 添加截距项
X = np.hstack((np.ones((X.shape[0], 1)), X))
# 梯度下降法求解回归系数
def gradient_descent(X, y, weights, learning_rate, iterations):
m = X.shape[0]
for _ in range(iterations):
predictions = X.dot(weights)
errors = predictions - y
gradient = X.T.dot(errors) / m
weights -= learning_rate * gradient
return weights
weights = np.zeros(X.shape[1])
learning_rate = 0.01
iterations = 1000
weights = gradient_descent(X, y, weights, learning_rate, iterations)
模型评估
最后,我们可以使用均方误差(MSE)来评估模型的性能:
from sklearn.metrics import mean_squared_error
y_pred = X.dot(weights)
mse = mean_squared_error(y, y_pred)
print(f'MSE: {mse}')
2. 乘客生存预测
另一个经典的预测建模案例是泰坦尼克号乘客生存预测。以下是一个使用NumPy进行预测建模的示例:
import pandas as pd
# 读取数据
data = pd.read_csv('titanic.csv')
# 数据预处理
data = data.dropna()
data['age'] = data['age'].fillna(data['age'].mean())
data['fare'] = data['fare'].fillna(data['fare'].mean())
# 特征工程
X = data[['pclass', 'age', 'sibsp', 'parch', 'fare']]
y = data['survived']
# 数据标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 模型构建
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
# 模型评估
from sklearn.metrics import accuracy_score
X_test = X
y_test = y
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
总结
NumPy是Python中用于科学计算的核心库,它提供了强大的n维数组对象和丰富的数组操作功能。通过本文的实战案例,我们可以看到NumPy在预测建模中的应用。掌握NumPy将有助于你更高效地进行数据分析和建模。