在数据科学领域,机器学习项目的成功实施依赖于一个清晰、结构化的流程。本文将带深入了解机器学习项目的每一个环节,从数据导入到模型部署,帮助系统地掌握整个流程。
在开始之前,需要对线性回归算法有一定的了解。如果对算法不熟悉,建议先阅读相关文档,以便更好地理解后续内容。
在本步骤中,将导入以下库以支持后续操作:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
这些库将用于线性代数计算、数据处理、模型构建和评估以及数据可视化。
将使用“电子商务客户数据集”(CSV文件)进行分析。该数据集包含了客户的电子邮件、地址和头像颜色等信息,以及数值型列,如平均会话时长、应用使用时间、网站使用时间和会员时长等。
使用Pandas的基本函数读取和加载CSV文件,并查看数据集的初始行、数值列的统计详情和数据集的基本信息。
df = pd.read_csv('Ecommerce Customers.csv')
df.head()
df.describe()
df.info()
在本步骤中,将使用Seaborn库的函数来可视化数据,寻找数据间的关联。
sns.jointplot(x='Time on Website', y='Yearly Amount Spent', data=df)
sns.jointplot(x='Time on App', y='Yearly Amount Spent', data=df)
sns.jointplot(x='Time on App', y='Length of Membership', kind="hex", data=df)
sns.pairplot(df)
通过这些图表,可以发现与年消费金额最相关的特征是会员时长。
在本步骤中,将数据划分为训练集和测试集,为模型训练和评估做准备。
X = customers[['Avg. Session Length', 'Time on App', 'Time on Website', 'Length of Membership']]
y = customers['Yearly Amount Spent']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=105)
在本步骤中,将使用线性回归算法训练模型。
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
模型训练完成后,可以查看模型的系数。
使用训练好的模型对测试集进行预测,并创建实际值与预测值的散点图。
predictions = lr_model.predict(X_test)
plt.scatter(y_test, predictions)
plt.xlabel('Y Test')
plt.ylabel('Predicted Y')
在本步骤中,将计算模型的性能指标,如平均绝对误差、均方误差和均方根误差。
from sklearn import metrics
print('MAE :', metrics.mean_absolute_error(y_test, predictions))
print('MSE :', metrics.mean_squared_error(y_test, predictions))
print('RMSE :', np.sqrt(metrics.mean_squared_error(y_test, predictions)))
sns.distplot(y_test - predictions, bins=50)
coefficients = pd.DataFrame(lr_model.coef_, X.columns)
coefficients.columns = ['Coefficient']
coefficients