机器学习神器Scikit-Learn入门教程

简介: Scikit-learn是一个非常知名的Python机器学习库,它广泛地用于统计分析和机器学习建模等数据科学领域。

Scikit-learn是一个非常知名的Python机器学习库,它广泛地用于统计分析和机器学习建模等数据科学领域。


  • 建模无敌:用户通过scikit-learn能够实现各种监督和非监督学习的模型


  • 功能多样:同时使用sklearn还能够进行数据的预处理、特征工程、数据集切分、模型评估等工作


  • 数据丰富:内置丰富的数据集,比如:泰坦尼克、鸢尾花等,数据不再愁啦


本篇文章通过简明快要的方式来介绍scikit-learn的使用,更多详细内容请参考官网:


  1. 内置数据集使用


  1. 数据集切分


  1. 数据归一化和标准化


  1. 类型编码


  1. 建模6步曲



Scikit-learn使用神图


下面这张图是官网提供的,从样本量的大小开始,分为回归、分类、聚类、数据降维共4个方面总结了scikit-learn的使用:


https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html


安装


关于安装scikit-learn,建议通过使用anaconda来进行安装,不用担心各种配置和环境问题。当然也可以直接pip来安装:


pipinstallscikit-learn


数据集生成


sklearn内置了一些优秀的数据集,比如:Iris数据、房价数据、泰坦尼克数据等。


importpandasaspd importnumpyasnp importsklearn fromsklearnimportdatasets#导入数据集


分类数据-iris数据


#iris数据 iris=datasets.load_iris() type(iris) sklearn.utils.Bunch

iris数据到底是什么样子?每个内置的数据都存在很多的信息






可以将上面的数据生成我们想看到的DataFrame,还可以添加因变量:




回归数据-波士顿房价




我们重点关注的属性:


  • data


  • target、target_names


  • feature_names


  • filename


同样可以生成DataFrame:



三种方式生成数据


方式1


#调用模块 fromsklearn.datasetsimportload_iris data=load_iris() #导入数据和标签 data_X=data.data data_y=data.target


方式2


fromsklearnimportdatasets loaded_data=datasets.load_iris()#导入数据集的属性 #导入样本数据 data_X=loaded_data.data #导入标签

data_y=loaded_data.target


方式3


#直接返回 data_X,data_y=load_iris(return_X_y=True)


数据集使用汇总


fromsklearnimportdatasets#导入库 boston=datasets.load_boston()#导入波士顿房价数据 print(boston.keys())#查看键(属性)['data','target','feature_names','DESCR','filename'] print(boston.data.shape,boston.target.shape)#查看数据的形状 print(boston.feature_names)#查看有哪些特征 print(boston.DESCR)#described数据集描述信息 print(boston.filename)#文件路径


数据切分



#导入模块 fromsklearn.model_selectionimporttrain_test_split #划分为训练集和测试集数据 X_train,X_test,y_train,y_test=train_test_split( data_X, data_y, test_size=0.2, random_state=111 ) #150*0.8=120 len(X_train)


数据标准化和归一化


fromsklearn.preprocessingimportStandardScaler#标准化 fromsklearn.preprocessingimportMinMaxScaler#归一化 #标准化 ss=StandardScaler() X_scaled=ss.fit_transform(X_train)#传入待标准化的数据 #归一化 mm=MinMaxScaler() X_scaled=mm.fit_transform(X_train)


类型编码


来自官网案例:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html


对数字编码



对字符串编码



建模案例


导入模块


fromsklearn.neighborsimportKNeighborsClassifier,NeighborhoodComponentsAnalysis#模型 fromsklearn.datasetsimportload_iris#导入数据 fromsklearn.model_selectionimporttrain_test_split#切分数据 fromsklearn.model_selectionimportGridSearchCV#网格搜索 fromsklearn.pipelineimportPipeline#流水线管道操作 fromsklearn.metricsimportaccuracy_score#得分验证


模型实例化


#模型实例化 knn=KNeighborsClassifier(n_neighbors=5)


训练模型


knn.fit(X_train,y_train) KNeighborsClassifier()


测试集预测


y_pred=knn.predict(X_test) y_pred#基于模型的预测

array([0,0,2,2,1,0,0,2,2,1,2,0,1,2,2,0,2,1,0,2,1,2, 1,1,2,0,0,2,0,2])


得分验证


模型得分验证的两种方式:


knn.score(X_test,y_test) 0.9333333333333333 accuracy_score(y_pred,y_test) 0.9333333333333333


网格搜索


如何搜索参数


fromsklearn.model_selectionimportGridSearchCV #搜索的参数 knn_paras={"n_neighbors":[1,3,5,7]} #默认的模型 knn_grid=KNeighborsClassifier() #网格搜索的实例化对象 grid_search=GridSearchCV( knn_grid, knn_paras, cv=10#10折交叉验证 ) grid_search.fit(X_train,y_train) GridSearchCV(cv=10,estimator=KNeighborsClassifier(), param_grid={'n_neighbors':[1,3,5,7]}) #通过搜索找到的最好参数值 grid_search.best_estimator_ KNeighborsClassifier(n_neighbors=7) grid_search.best_params_

Out[42]:

{'n_neighbors':7} grid_search.best_score_ 0.975


基于搜索结果建模


knn1=KNeighborsClassifier(n_neighbors=7) knn1.fit(X_train,y_train) KNeighborsClassifier(n_neighbors=7)

通过下面的结果可以看到:网格搜索之后的建模效果是优于未使用网格搜索的模型:

y_pred_1=knn1.predict(X_test) knn1.score(X_test,y_test) 1.0 accuracy_score(y_pred_1,y_test) 1.0


相关文章
|
13天前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
64 2
|
5天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
11 1
|
7天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
32 2
|
7天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
20 1
|
11天前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
19 4
|
13天前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【10月更文挑战第4天】在数据科学领域,模型评估是连接理论与实践的桥梁,帮助我们理解模型在未知数据上的表现。对于初学者而言,众多评估指标和工具常令人困惑。幸运的是,Scikit-learn 这一强大的 Python 库使模型评估变得简单。本文通过问答形式,带你逐步掌握 Scikit-learn 的评估技巧。Scikit-learn 提供了丰富的工具,如交叉验证、评分函数(准确率、精确率、召回率、F1 分数)、混淆矩阵和 ROC 曲线等。
22 1
|
19天前
|
机器学习/深度学习 数据采集 算法
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
30 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
97 8
|
1月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
87 3
|
1月前
|
机器学习/深度学习 算法 数据挖掘