机器学习 python实战 | 特征选择、预测模型

前言

袁同学学位论文需要,要做一个航空发动机相关的预测模型,了解需求后做了一下测试。
实现最简单的线性回归拟合。


1.导包

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cross_validation import train_test_split  #这里是引用了交叉验证

2.读数据

设置文件路径
输出前五行

data = pd.read_csv('//Users//taorui//Desktop//C.csv')
print(data.head())
  • 控制台输出:
     T    PR    C        K4        K5          P
0  0.242762  1.10  1.3  0.872705  0.849261  111457.50
1  0.299574  1.15  1.3  0.819009  0.786949  116523.75
2  0.346813  1.20  1.3  0.770697  0.731578  121590.00
3  0.388138  1.25  1.3  0.727038  0.682132  126656.25
4  0.425288  1.30  1.3  0.687423  0.637777  131722.50

3.单因素影响

画出'PR', 'K4', 'K5', 'C', 'P'‘T’的相关性图
用pandas包十分方便,x_vars是自变量,y_vars是因变量。

sns.pairplot(data, x_vars=['PR', 'K4', 'K5', 'C', 'P'], y_vars='T', size=7, aspect=0.8, kind='reg')
plt.show()
  • 图像输出:
    机器学习 python实战 | 特征选择、预测模型_第1张图片
    可以看到各个特征变量和目标变量的相关性很高,这样我们就可以做后面的线性归回分析了。

4.构建数据集

‘T’是目标变量,’PR’, ‘K4’, ‘K5’, ‘C’, ‘P’是特征变量。

# 创建特征变量x
feature_cols = ['PR', 'K4', 'K5', 'C', 'P']
X = data[feature_cols]
​
# 检查x的类型和形状
print(type(X))
print(X.shape)
​
# 创建目标变量y
y = data['T']
# 检查y
print(y.head())
  • 控制台的输出:
<class 'pandas.core.frame.DataFrame'>
(68, 5)
0    0.242762
1    0.299574
2    0.346813
3    0.388138
4    0.425288
Name: T, dtype: float64

自变量是68*5的数据

5.训练集测试集划分

训练集的大小为51行,测试集为17行

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)
  • 控制台输出:
(51, 5)
(51,)
(17, 5)
(17,)

6.建模

选择线性回归

# 导入线性回归模型
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
# 拟合模型
model = linreg.fit(X_train, y_train)
# 输出模型的常数项
print(linreg.intercept_)
# 输出模型的系数
print(linreg.coef_)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
  • 控制台输出:
-3.55187951698
[  1.04770046e-10   1.42840361e+01  -1.23029610e+01   4.77227275e-01  1.05982031e-05]

常数项为-3.55187951698,特征系数为:[ 1.04770046e-10 1.42840361e+01 -1.23029610e+01 4.77227275e-01 1.05982031e-05]

7.模型输出

#输出特征变量的系数矩阵
print(list(zip(feature_cols, linreg.coef_)))
# 输出预测结果
y_pred = linreg.predict(X_test)
print(y_pred)
  • 控制台输出:
[('PR', 1.0477004584627557e-10), ('K4', 14.284036140465224), ('K5', -12.302961036637541), ('C', 0.47722727506729989), ('P', 1.059820310552371e-05)]

[ 0.44577646  0.17164983  0.58288693  0.26046797  0.51254283  0.35109938  0.67708651  0.54122192  0.2939984   0.36524462  0.26979917  0.12392711 0.37161395  0.51874202  0.63060966  0.4002806   0.60589296]

8.图像化展现

plt.figure()
# 画出模型的预测结果
plt.plot(range(len(y_pred)),y_pred,'b',label="predict")
# 画出测试集的真实值
plt.plot(range(len(y_pred)),y_test,'r',label="test")
# 图例的位置:右上角
plt.legend(loc="upper right") 
# 设置横纵坐标
plt.xlabel("the number of sales")
plt.ylabel('value of sales')
# 画图
plt.show()
  • 运行后图像输出:
    机器学习 python实战 | 特征选择、预测模型_第2张图片

可以看到预测结果和实际情况基本吻合

你可能感兴趣的:(机器学习,建模demo)