使用管道流简化机器学习代码

# --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. 如果模型效果不好,进行模型的调整(特征工程、参数、算法重新选择)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值