# --encoding:utf-8 --
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error
from sklearn.externals import joblib
from sklearn.pipeline import Pipeline
# 1. 数据的读取
df = pd.read_csv("")
# 2. 数据清洗,比如异常数据过滤
df.replace('?', np.nan, inplace=True)
datas = df.dropna(axis=1, how='any')
# 3. 构建特征矩阵X和目标数据矩阵Y, 如果不是数值型的,需要转换为数值型的
X = datas.iloc[:, 0:2]
Y = datas['xx']
# 4. 数据分割
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
# 5. 特征工程(中间可以有多个),比如这里的进行数据的标准化
one_hot = OneHotEncoder() # 哑编码模型对象构建<具体的后面会说>
ss = StandardScaler() # 构建模型对象
# 6. 算法模型构建, 比如:这里是一个线性回归
lr = LinearRegression() # 算法模型对象构建
# 7. 构建管道流
pipline = Pipeline([
('one_hot_step_name', one_hot), # 第一步操作
('ss', ss), # 第二步操作者
('lr', lr) # 第三步操作
])
# 8. 管道流模型对象构建
pipline.fit(X_train, Y_train)
## 8.1 当模型构建完成后,我们可以通过给定的步骤的名称获取对应操作
pipline.get_params()['lr'] # 获取名称为lr的那个操作
pipline.set_params(lr__fit_intercept = False) # 根据名称获取对应步骤的对象,并修改对象对应的的参数
# 7. 使用训练集数据对算法模型的效果进行判断(要求测试集必须和训练集采用相同的操作)
# 7.2 计算评估指标(模型自带的评估指标,比如:回归算法中是R^2,分类算法是准确率)
print(pipline.score(X_test, Y_test))
# 7.3 计算其它评估指标(需要根据预测值和实际值进行计算)
y_hat = pipline.predict(X_test) # 获取预测信息
print("mse:", end='')
print(mean_squared_error(y_true=Y_test, y_pred=y_hat))
print("mae:", end='')
print(mean_absolute_error(y_true=Y_test, y_pred=y_hat))
# 9. 如果模型效果不错,进行模型输出("所有模型都需要输出的")
joblib.dump(pipline, 'model/pipline.m')
# 10. 如果模型效果不好,进行模型的调整(特征工程、参数、算法重新选择)
使用管道流简化机器学习代码
最新推荐文章于 2023-12-28 09:47:59 发布