对于已经训练好的模型,可以先保存,等到下次需要的时候再加载
保存当模型训练好后
#保存训练好的模型
model=joblib.dump(lr,'./new/test.pkl') #文件格式pkl
加载
对保存的模型进行加载
#预测房价结果
model=joblib.load('./new/test.pkl')
y_predict=std_y.inverse_transform(model.predict(x_test))
print('保存的模型预测的结果:',y_predict)
逻辑回归
应用场景:逻辑回归是解决二分类问题的利器。
eg:广告点击率?判断用户的性别?预测用户是否会购买给定的商品类?判断一条评论是正面的还是负面的?
线性回归的输入——>分类,需要使用工具sigmod函数
与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解。
- 损失函数:均方误差(不存在多个局部最低点)只有一个最小值
- 对数似然损失:多个局部最小值 目前解决不了的问题
- 梯度下降求解:1.多次随机初始化,多次比较最小值结果 2.求解过程当中,调整学习率
尽管每月全局最低点,但是效果都是不错的。
从sklearn.linear_model导入LogisticRegression。
哪个类别少,那么判定概率值指的就是这个类别。
步骤:
1、网上获取数据(工具pandas)
2、数据缺失值处理、标准化
3、LogisticRegression估计器流程
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor,Ridge,LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error,classification_report
import joblib
def logistic():
'''
逻辑回归做二分类进行癌症预测(根据细胞的属性特征)
:return: None
'''
#构造列标签名字
column=['Sample code number','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("C:/Users/sunfl/Desktop/breast-cancer-wisconsin.data",names=column)
#处理缺失值
data=data.replace(to_replace='?',value=np.nan)
data=data.dropna()
#进行数据的分割
x_train,x_test,y_train,y_test=train_test_split(data[column[1:10]],data[column[10]],test_size=0.25)
#进行标准化处理
std=StandardScaler()
x_train=std.fit_transform(x_train)
x_test=std.fit_transform(x_test)
#逻辑回归预测
lg=LogisticRegression(C=1.0)
lg.fit(x_train,y_train)
print(lg.coef_)
y_predict=lg.predict(x_test)
print('准确率为:',lg.score(x_test,y_test))
print('召回率为:',classification_report(y_test,y_predict,labels=[2,4],target_names=['良性','恶性']))
return None
if __name__=='__main__':
logistic()
逻辑回归总结
应用:广告点击率预测、电商购物搭配推荐
优点:适合需要得到一个分类概率的场景
缺点:当特征空间很大时,逻辑回归的性能不是很好
(看硬件能力)



