纸上得来终觉浅,得知此事要躬行
前言
提示:这里可以添加本文要记录的大概内容:
简单记录一下机器学习课程中的练手小项目,记录自己的技术沉淀过程。
一、数据清洗
关于机器学习,我觉得更多的时间是花在了得到一份更好的特征上面,因此在进行模型训练之前,首先要做的就是得到一些自己满意的特征。所以先看一下已给数据的分布情况来为下一步处理做准备。
查看特征与label的关联程度
Rgr = pd.read_excel('data.xlsx', sheet_name='Regression')
# 查看数据特征
features = ['feature1', 'feature2', 'feature3', 'feature4', 'feature5', 'feature6', 'feature7',
'feature8', 'feature9', 'feature10', 'feature11', 'feature12', 'feature13', 'feature14',
'feature15', 'feature16', 'feature17', 'feature18']
pic = sns.pairplot(train_data, x_vars=features, y_vars='test', kind="reg", height=5, aspect=0.7)
pic.savefig('new.png')
最终的图片如下所示
查看特征自身的差异性。
for i in range(len(features)):
plt.plot(train_data[features[i]], label=features[i])
特征筛选
因为前面的特征体现出均有较好的线性关系,所以这里不再进行特征筛选,直接选用全部特征
二、引入模型
1.选择多元线性回归模型
代码如下(示例):
X = train_data[features[0:5] + features[5:12] + features[12:14] + features[16:]]
y = label
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=532) # 选择20%为测试集
print('训练集测试及参数:')
print('X_train.shape={}\n y_train.shape ={}\n X_test.shape={}\n, y_test.shape={}'.format(X_train.shape,
y_train.shape,
X_test.shape,
y_test.shape))
linreg = LinearRegression()
# 训练
model = linreg.fit(X_train, y_train)
print('模型参数:')
print(model)
# 训练后模型截距
print('模型截距:')
print(linreg.intercept_)
# 训练后模型权重(特征个数无变化)
print('参数权重:')
print(linreg.coef_)
y_pred = linreg.predict(X_test)
r2 = r2_score(y_test, y_pred)
print("r2 by hand:", r2)
2.尝试预测
利用训练好的模型进行预测
predict = Rgr.iloc[1096:, :]
ready = predict[features]
y = linreg.predict(ready)
pd.DataFrame(y).to_excel('regression.xlsx')
最终得到预测数据
总结
非常简单的使用了回归模型进行简单的预测,大概知道机器学习就是一个非常简单的工具,只要数据找得好,预测准确度绝对嘎嘎厉害。