Python数据集:乳腺癌数据集(fromsklearn.datasetsimportlo。。。

Python数据集:乳腺癌数据集(fromsklearn.datasetsimportlo。。。
数据集:乳腺癌数据集(from sklearn.datasets import load_breast_cancer)。
(1)将样本集划分为70%的训练集,30%作为测试集,分别⽤逻辑回归算法和KNN算法(需要先对数据进⾏标准化)建模(不指定参数),输出其测试结果的混淆矩阵,计算其准确率、查全率和假正率。
(2)利⽤搜索⽹格,分别确定逻辑回归及KNN模型的最优参数。
KNN算法的主要参数提⽰:
①n_neighbors(最近邻个数)
取值⼀般为奇数。
②algorithm(⽤于计算最近邻的算法)
取值有‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’等,默认为‘auto’。注意:算法选择不影响KNN的最终结果,只影响模型的性能(计算的快慢程度)。
③p(Minkowski距离的指标参数)
默认取p=2,即欧⽒距离。⽽p=1为曼哈顿距离。如果需要使⽤⾮明⽒距离的其它指标,应修改metric参数的值。
④weights(权重)
预测中使⽤的权重函数。可能的取值:‘uniform’:统⼀权重,即每个邻域中的所有点均被加权。 ‘distance’:权重点与其距离的倒数,在这种情况下,查询点的近邻⽐远处的近邻具有更⼤的影响⼒。
(3)对整个数据集使⽤K折交叉验证⽅式(k=2,3,4,5,6,7,8,9,10),分别⽤逻辑回归和KNN建模(⽤上⼀步确定的最优参数),绘图对⽐两种模型在k取不同值下的的分类准确率。
#!/usr/bin/env python
# coding: utf-8
from sklearn.datasets import load_breast_cancer
import numpy as np
from sklearn import linear_model, model_selection
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
ighbors import KNeighborsClassifier
ics import confusion_matrix
from sklearn import datasets
del_selection import GridSearchCV
del_selection import cross_val_score
np.set_printoptions(suppress=True)
np.set_printoptions(precision=4)
# from pylab import mpl
# Params['font.sans-serif'] = ['SimHei']    # 指定默认字体:解决plot不能显⽰中⽂问题# Params['axes.unicode_minus'] = False      # 解决保存图像是负号'-'显⽰为⽅块的问题
dataset = datasets.load_breast_cancer()
data = dataset.data
target = dataset.target
x_train, x_test, y_train, y_test = ain_test_split(data,target,
test_size=0.3,random_state=1)
model_logic = LogisticRegression(max_iter=10000).fit(x_train, y_train.ravel())
print(model_logic.score(x_test,y_test))
y_pred = model_logic.predict(x_test)
y_pred = model_logic.predict(x_test)
#测试逻辑回归的模型评估
tn, fp, fn, tp = confusion_matrix(y_test, y_pred,labels=[0,1]).ravel()
print(tn,fp,fn,tp)
=(tn+tp)/(tn+tp+fn+fp)
trp =(tp)/(tp+fn)
fpr =(fp)/(tn+fp)
print("准确率为:{}%".format(accuracy*100))
print("查全率为:{}%".format(trp*100))
print("假正率为:{}%".format(fpr*100))
param ={'penalty':['l2','l1'],'C':[0.001,0.01,0.1,1],
'class_weight':['balanced',None],'multi_class':['ovr'],'solver':['liblinear']}
gc = GridSearchCV(model_logic, param_grid=param, cv=10)
gc.fit(x_train, y_train)
print("在测试集上的准确率(得分):",gc.score(x_test,y_test))
print("交叉验证的最好结果:",gc.best_score_)
工程塑料应用print("最佳参数组合:",gc.best_params_)
k=[2,3,4,5,6,7,8,9,10]
scores =[]
model_logic = LogisticRegression(max_iter=10000,C=1, class_weight='balanced',                                multi_class='ovr', penalty='l1', solver='liblinear')
for i in range(0,len(k)):
score = cross_val_score(model_logic,data,target,cv=k[i])
scores.an())
print(scores)
plt.figure()
plt.title('逻辑回归模型的k折交叉验证得分曲线图')
plt.plot(k,scores,'bs-')
#对训练集和测试集的X正则化
standardizer =  StandardScaler()
X_std = standardizer.fit_transform(x_train)
standardizer =  StandardScaler()
X_std_test = standardizer.fit_transform(x_test)
knn = KNeighborsClassifier ().fit(X_std, y_train)
print(knn.score(X_std_test,y_test))
y_pred = knn.predict(X_std_test)
print(y_pred)
#注意阳性为1 True Positive
#测试KNN的模型评估
tn, fp, fn, tp = confusion_matrix(y_test, y_pred,labels=[0,1]).ravel()
print(tn,fp,fn,tp)
=(tn+tp)/(tn+tp+fn+fp)
trp =(tp)/(tp+fn)
fpr =(fp)/(tn+fp)
print("准确率为:{}%".format(accuracy*100))
print("查全率为:{}%".format(trp*100))
print("假正率为:{}%".format(fpr*100))
param ={'n_neighbors':[1,3,5],'algorithm':['auto','ball_tree','kd_tree','brute'],'p':[1,2],'weights':['uniform','distance']} gc = GridSearchCV(knn, param_grid=param, cv=5)
gc.fit(x_train,y_train)
print("在测试集上的准确率:",gc.score(x_test,y_test))andida
print("交叉验证的最好结果:",gc.best_score_)
print("最佳参数组合:",gc.best_params_)
k=[2,3,4,5,6,7,8,9,10]
scores =[]
knn = KNeighborsClassifier(algorithm='auto', n_neighbors=3, p=1,weights='uniform')
for i in range(0,len(k)):
score = cross_val_score(knn,data,target,cv=k[i])
mgs1scores.an())
知识与能力训练print(scores)
plt.figure()
plt.title('knn的k折交叉验证得分曲线图')
新知岛
plt.plot(k,scores,'bs-')
注意,对于画曲线图中⽂乱码问题:
from pylab import mpl
电容柜Params[‘font.sans-serif’] = [‘SimHei’]
对于knn的k折交叉验证和⽹格搜索,应该也需要对测试的数据进⾏标准化。
因版本问题导致的参数设置,特别是算法选择的参数⽆法设置

本文发布于:2024-09-25 04:23:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326294.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   参数   算法   模型   数据   回归   距离
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议