如何自己做网站赚钱,网站域名什么意思,辽宁省建设工程信息网是干什么的,wordpress抓取股票行情目录 一、实验目的与要求二、主要实验过程1、加载数据集2、数据预处理3、划分数据集4、创建模型估计器5、模型拟合6、模型性能评估 三、主要程序清单和运行结果四、实验体会 一、实验目的与要求
1、目的#xff1a; 综合运用所学知识#xff0c;选取有实际背景的应用问题进行… 目录 一、实验目的与要求二、主要实验过程1、加载数据集2、数据预处理3、划分数据集4、创建模型估计器5、模型拟合6、模型性能评估 三、主要程序清单和运行结果四、实验体会 一、实验目的与要求
1、目的 综合运用所学知识选取有实际背景的应用问题进行数据分析方案的设计与实现。要求明确目标和应用需求涵盖数据预处理、建模分析、模型评价和结果展示等处理阶段完成整个分析流程。
2、要求
1应用Scikit-Learn库中的逻辑回归、SVM和kNN算法对Scikit-Learn自带的乳腺癌from sklearn.datasets import load_breast_cancer数据集进行分类并分别评估每种算法的分类性能。 2为了进一步提升算法的分类性能能否尝试使用网格搜索和交叉验证找出每种算法较优的超参数。
二、主要实验过程
1、加载数据集
from sklearn.datasets import load_breast_cancer
cancerload_breast_cancer()
cancer.keys()dict_keys([data, target, target_names, DESCR, feature_names])将数据集转换为DataFram
import pandas as pd
cancer_datapd.DataFrame(cancer.data,columnscancer.feature_names)
cancer_data[target]cancer.target_names[cancer.target]
cancer_data.head(3).append(cancer_data.tail(3))mean radiusmean texturemean perimetermean areamean smoothnessmean compactnessmean concavitymean concave pointsmean symmetrymean fractal dimension...worst textureworst perimeterworst areaworst smoothnessworst compactnessworst concavityworst concave pointsworst symmetryworst fractal dimensiontarget017.9910.38122.801001.00.118400.277600.300100.147100.24190.07871...17.33184.602019.00.162200.665600.71190.26540.46010.11890malignant120.5717.77132.901326.00.084740.078640.086900.070170.18120.05667...23.41158.801956.00.123800.186600.24160.18600.27500.08902malignant219.6921.25130.001203.00.109600.159900.197400.127900.20690.05999...25.53152.501709.00.144400.424500.45040.24300.36130.08758malignant56616.6028.08108.30858.10.084550.102300.092510.053020.15900.05648...34.12126.701124.00.113900.309400.34030.14180.22180.07820malignant56720.6029.33140.101265.00.117800.277000.351400.152000.23970.07016...39.42184.601821.00.165000.868100.93870.26500.40870.12400malignant5687.7624.5447.92181.00.052630.043620.000000.000000.15870.05884...30.3759.16268.60.089960.064440.00000.00000.28710.07039benign
6 rows × 31 columns
2、数据预处理
进行数据标准化
from sklearn.preprocessing import StandardScaler
XStandardScaler().fit_transform(cancer.data)
ycancer.target3、划分数据集
将数据集划分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.25,random_state33) 4、创建模型估计器
1创建逻辑回归模型估计器
#创建逻辑回归模型估计器
from sklearn.linear_model import LogisticRegression
lgrLogisticRegression()2创建SVM算法模型估计器
#创建SVM算法模型估计器
from sklearn.svm import SVC
svcSVC()3创建kNN算法模型估计器
#创建kNN算法模型估计器
from sklearn.neighbors import KNeighborsClassifier
knnKNeighborsClassifier()5、模型拟合
用训练集训练模型估计器estimator
#训练逻辑回归模型估计器
lgr.fit(X_train,y_train)#训练SVM算法模型估计器
svc.fit(X_train,y_train)#训练kNN算法模型估计器
knn.fit(X_train,y_train)6、模型性能评估
1逻辑回归模型性能评估
#用模型估计器对测试集数据做预测
y_predlgr.predict(X_test)#对模型估计器的学习效果进行评价
print(测试集的分类准确率为:,lgr.score(X_test,y_test))2SVM算法模型性能评估
#用模型估计器对测试集数据做预测
y_predsvc.predict(X_test)#对模型估计器的学习效果进行评价
print(测试集的分类准确率为:,svc.score(X_test,y_test))3kNN算法模型性能评估
#用模型估计器对测试集数据做预测
y_predknn.predict(X_test)#对模型估计器的学习效果进行评价
print(测试集的分类准确率为:,knn.score(X_test,y_test))三、主要程序清单和运行结果
1、逻辑回归用于分类
#加载数据集
from sklearn.datasets import load_breast_cancer
cancerload_breast_cancer()#对数据集进行预处理实现数据标准化
from sklearn.preprocessing import StandardScaler
XStandardScaler().fit_transform(cancer.data)
ycancer.target#将数据集划分为训练集和测试集(要求测试集占25%随机状态random state设置为33)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.25,random_state33) #创建模型估计器estimator
from sklearn.linear_model import LogisticRegression
lgrLogisticRegression()#用训练集训练模型估计器estimator
lgr.fit(X_train,y_train)#用模型估计器对测试集数据做预测
y_predlgr.predict(X_test)#对模型估计器的学习效果进行评价
#最简单的评估方法就是调用估计器的score(),该方法的两个参数要求是测试集的特征矩阵和标签向量
print(测试集的分类准确率为:,lgr.score(X_test,y_test))
from sklearn import metrics
#对于多分类问题还可以使用metrics子包中的classification_report
print(metrics.classification_report(y_test,y_pred,target_namescancer.target_names)) #网格搜索与交叉验证相结合的逻辑回归算法分类
from sklearn.model_selection import GridSearchCV,KFold
params_lgr{C:[0.01,0.1,1,10,100],max_iter:[100,200,300],solver:[liblinear,lbfgs]}
kfKFold(n_splits5,shuffleFalse)grid_search_lgrGridSearchCV(lgr,params_lgr,cvkf)
grid_search_lgr.fit(X_train,y_train)
grid_search_y_predgrid_search_lgr.predict(X_test)
print(Accuracy:,grid_search_lgr.score(X_test,y_test))
print(best params:,grid_search_lgr.best_params_)2、支持向量用于分类
#加载数据集
from sklearn.datasets import load_breast_cancer
cancerload_breast_cancer()#对数据集进行预处理实现数据标准化
from sklearn.preprocessing import StandardScaler
XStandardScaler().fit_transform(cancer.data)
ycancer.target#将数据集划分为训练集和测试集(要求测试集占25%随机状态random state设置为33)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.25,random_state33) #创建模型估计器estimator
from sklearn.svm import SVC
svcSVC()#用训练集训练模型估计器estimator
svc.fit(X_train,y_train)#用模型估计器对测试集数据做预测
y_predsvc.predict(X_test)#对模型估计器的学习效果进行评价
#最简单的评估方法就是调用估计器的score(),该方法的两个参数要求是测试集的特征矩阵和标签向量
print(测试集的分类准确率为:,svc.score(X_test,y_test))
from sklearn import metrics
#对于多分类问题还可以使用metrics子包中的classification_report
print(metrics.classification_report(y_test,y_pred,target_namescancer.target_names))#网格搜索与交叉验证相结合的SVM算法分类
from sklearn.model_selection import GridSearchCV,KFold
params_svc{C:[0.1,1,10],gamma:[0.1,1,10],kernel:[linear,rbf]}
kfKFold(n_splits5,shuffleFalse)
grid_search_svcGridSearchCV(svc,params_svc,cvkf)
grid_search_svc.fit(X_train,y_train)
grid_search_y_predgrid_search_svc.predict(X_test)
print(Accuracy:,grid_search_svc.score(X_test,y_test))
print(best params:,grid_search_svc.best_params_)3、kNN用于分类
#加载数据集
from sklearn.datasets import load_breast_cancer
cancerload_breast_cancer()#对数据集进行预处理实现数据标准化
from sklearn.preprocessing import StandardScaler
XStandardScaler().fit_transform(cancer.data)
ycancer.target#将数据集划分为训练集和测试集(要求测试集占25%随机状态random state设置为33)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.25,random_state33) #创建模型估计器estimator
from sklearn.neighbors import KNeighborsClassifier
knnKNeighborsClassifier()#用训练集训练模型估计器estimator
knn.fit(X_train,y_train)#用模型估计器对测试集数据做预测
y_predknn.predict(X_test)#对模型估计器的学习效果进行评价
#最简单的评估方法就是调用估计器的score(),该方法的两个参数要求是测试集的特征矩阵和标签向量
print(测试集的分类准确率为:,knn.score(X_test,y_test))
from sklearn import metrics
#对于多分类问题还可以使用metrics子包中的classification_report
print(metrics.classification_report(y_test,y_pred,target_namescancer.target_names))#网格搜索与交叉验证相结合的kNN算法分类
from sklearn.model_selection import GridSearchCV,KFold
params_knn{algorithm:[auto,ball_tree,kd_tree,brute],n_neighbors:range(3,10,1),weights:[uniform,distance]}
kfKFold(n_splits5,shuffleFalse)
grid_search_knnGridSearchCV(knn,params_knn,cvkf)
grid_search_knn.fit(X_train,y_train)
grid_search_y_predgrid_search_knn.predict(X_test)
print(Accuracy:,grid_search_knn.score(X_test,y_test))
print(best params:,grid_search_knn.best_params_)四、实验体会 在本次实验中我使用了Scikit-Learn库中的逻辑回归、支持向量机(SVM)和k最近邻(kNN)算法对乳腺癌数据集进行分类并对每种算法的分类性能进行了评估。随后我尝试使用网格搜索和交叉验证来找出每种算法的较优超参数以进一步提升其分类性能。 首先我加载了乳腺癌数据集并将其划分为训练集和测试集。然后我分别使用逻辑回归、SVM和kNN算法进行训练并在测试集上进行评估。评估指标包括准确率、精确率、召回率和F1-score等。通过这些指标我能够了解每种算法在乳腺癌数据集上的分类性能。 接着我尝试使用网格搜索(Grid Search)和交叉验证(Cross Validation)来找出每种算法的较优超参数。网格搜索是一种通过在指定的超参数空间中搜索最佳参数组合来优化模型的方法。而交叉验证则是一种评估模型性能和泛化能力的方法它将数据集分成多个子集在每个子集上轮流进行训练和测试从而得到更稳健的性能评估结果。 在进行网格搜索和交叉验证时我根据每种算法的参数范围设置了不同的参数组合并使用交叉验证来评估每种参数组合的性能。最终我选择了在交叉验证中性能最优的参数组合作为最终的超参数并将其用于重新训练模型。 通过这次实验我学到了如何使用Scikit-Learn库中的机器学习算法进行分类任务并了解了如何通过网格搜索和交叉验证来优化算法的超参数提升其分类性能。同时我也意识到了在实际应用中选择合适的算法和调优超参数对于获得良好的分类效果至关重要。这次实验为我提供了宝贵的实践经验对我的机器学习学习之旅有着重要的意义。