栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python学习笔记--机器学习算法基础

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python学习笔记--机器学习算法基础

逻辑回归 模型保存和加载

from sklearn.externals import joblib
保存:
joblib.dump(rf,‘test.pkl’)
加载:
estimator=joblib.load(‘test.pkl’)
注:文件格式pkl

####  保存训练好的模型
joblib.dump(lr,'./tmp/test.pkl')
 
#### 预测房价结果
model = joblib.load('./tmp/test.pkl')
y_predict = std_y.inverse_transform(model.predict(x_test).reshape(1,-1))
print('保存的模型预测的结果:',y_predict)
逻辑回归–分类算法

线性回归的式子作为逻辑回归的输入
二分类–得出概率值
与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解

1.损失函数:均方误差–不存在多个局部最低点,只有一个最小值
对数似然损失:多个局部最小值,目前解决不了的问题
解决方案(尽量改善):1)多次随机初始化,多次比较最小值结果
2)求解过程中,调整学习率
尽管没有全局最低点,但是效果还不错

2.sklearn逻辑回归API
sklearn.linear_model.LogisticRegression
sklearn.linear_model.LogisticRegression(penalty=‘l2’,c=1.0)
Logistic回归分类器
codf_:回归系数

3.良、恶性肿瘤案例
一般情况:哪一个类别少,判定概率值是值得这个类别
缺失值用np.nan替换
流程:网上获取数据(pandas)
数据缺失值处理、标准化
LogisticRegression估计器流程
pandas使用
pd.read_csv(’ ,names=column_names’)
culumn_names:指定类别名字
colimn_name=[’ ‘,’ ‘]
replace(to_replace’',value=):返回数据
dropna():返回数据

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( 'https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',names=column)
    print(data)

    ##缺失值进行处理
    data=data.replace(to_replace='?',value=np.nan)
    ##删除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.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()

总结:
应用:广告点击率预测、是否患病、金融诈骗,是否为续假账号
优点:适合需要得到一个分类概率的场景,简单,速度快
缺点:不好处理多分类问题

4.多分类问题
softmax方法-逻辑回归在多分类问题上的推广
5.逻辑回归和朴素贝叶斯的比较
解决问题:二分类 多分类
应用场景:癌症,二分类需要概率 文本分类
参数:正则化力度 没有
判别模型 生成模型(具有先验概率)
共同点:得出的结果都有概率解释

非监督学习–k-means

流程(假设有3个类别):
1.随机在数据当中抽取三个样本,当作三个类别的中心店(k1,k2,k3)
2.计算其余点分别到这三个中心点的距离,(a,b,c),每一个样本有三个距离,从中选择距离最近的一个点,作为自己的标记,形成三个族群
3.分别计算这三个族群的平均值,把三个平均值与之前的三个旧中心点进行比较:
如果相同结束聚类
如果不相同:把三个平均值当作新的中心点,重复第二步

4.k-meansAPI
sklearn.cluster.Kmeans(n_clusters=8,init=‘k-means++’)
k-means聚类
n_clusters:开始的聚类中心数量
init:初始化方法,默认为‘k-means++’
labels_:默认标记的类型,可以和真实值比较(不是值比较)

Kmeans性能评估指标
轮廓系数:外部距离最大化、内部聚类最小化[-1,1]
轮廓系数API
sklearn.metrics.silhouette_score
sklearn.metrics.lihouette_score(X,labels)
计算所有样本的平均轮廓系数
X:特征值
labels:被聚类标记的目标值

Kmeans总结
特点:采用迭代式算法,直观易懂,并且非常使用
缺点:容易收敛到局部最优解(多次聚类)
注意:聚类一般座在分类之前

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号