天天看点

机器学习之训练好的模型保存与加载

以乳腺癌数据为例做逻辑回归并保存模型

  1. 加载数据
  2. 删除无用数据
  3. 删除缺失数据
  4. 过采样平衡数据
  5. 提取数据
  6. 对数据进行标准化
  7. 切分数据
  8. 训练模型
  9. 保存模型
  10. 加载模型

数据来源

数据来源:http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Original)

机器学习之训练好的模型保存与加载

代码实现

import pandas as pd
import numpy as np
# 导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
# 导入标准化函数
from sklearn.preprocessing import StandardScaler
# 导入数据切分函数
from sklearn.model_selection import train_test_split as tts
导入保存模型函数
from sklearn.externals import joblib

# 下载下来的数据保存的路径
path = "../datas/breast-cancer-wisconsin.data"
# 列名
names = ['id','Clump Thickness','Uniformity of Cell Size','Uniformity of Cell Shape',
         'Marginal Adhesion','Single Epithelial Cell Size','Bare Nuclei',
        'Bland Chromatin','Normal Nucleoli','Mitoses','Class']
# 加载数据
data = pd.read_csv(path,names=names)

# 设置pandas可以显示的结果行数/列数
pd.set_option('display.max_rows',200)
pd.set_option('display.max_columns',200)

# 删除为空的数据和带'?'的数据
data = data.replace('?',np.nan).dropna()

# 分析数据删除无用的列
data.drop(columns=['id'],inplace=True)

# 使用过采样,进行类别平衡
counts = data[data['Class'].isin(['2'])]['Class'].count() #444
print(counts)
# 提取所有的标签为4的数据作为一组添加数据
data_add = data[data['Class'].isin(['4'])]
# 添加数据,保持样本平衡
data = pd.concat([data_add,data],axis=0)
print(data.shape)

# 提取X和Y
X = data.iloc[:,:-1]
y = data.iloc[:,-1]

# 标准化
ss = StandardScaler()
X = pd.DataFrame(ss.fit_transform(X),columns=names[1:-1])

# 分割数据集
X_train,X_test,y_train,y_test = tts(X,y,test_size=0.3,random_state=3)

# 逻辑回归模型训练
model_LR = LogisticRegression(max_iter=500)
model_LR.fit(X_train,y_train)
print(model_LR.coef_)
print(model_LR.score(X_test,y_test))

# 保存模型 这是一个二进制文件
joblib.dump(filename='LR.model',value=model_LR)
           

新建Python环境,调用模型

# 导入模型保存于加载函数
from sklearn.externals import joblib
# 加载模型
model_LR = joblib(filename='LR.model')
# 此时上述训练好的模型就可以直接使用
# 打印参数
print(model_LR.coef_)
           

效果展示

训练好的模型

机器学习之训练好的模型保存与加载

保存的二进制模型

机器学习之训练好的模型保存与加载

再次调用的模型参数

机器学习之训练好的模型保存与加载

继续阅读