当前位置:   article > 正文

【python学习笔记】Sklearn库的应用

sklearn

一、sklearn库

Scikit-learn(简称sklearn)是一个用于机器学习的Python库。

二、机器学习的基本流程:

(一) 机器学习的4个基本步骤:

  1. 数据预处理:数据的归一化、标准化、缺失值处理和特征提取等
  2. 模型选择和训练:使用收集到的数据对模型进行训练,常用的模型有:knn、决策树、线性回归等
  3. 模型评估:评估所使用的模型的表现
  4. 模型部署和优化:将模型部署到实际应用中

(二)sklearn在机器学习中的应用流程(通过实例进行学习)

  1. 数据集划分:

        常用函数:train_test_split() 

  1. # 2数据集划分
  2. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_stae=42)

2.模型选择以及(训练模型)投喂模型:方法.fit() —— knn为例

  1. from sklearn.neighbors import KNeighborsClassifier
  2. # 3模型选择,常用的有knn、决策树、线性回归等方法
  3. knn = KNeighborsClassifier()
  4. # 4投喂数据
  5. knn.fit(X_train, Y_train)

3 预测模型:方法.predict()

knn分类算法

  1. # 5预测数据
  2. data = pd.DataFrame()
  3. data['True_label'] = Y_test
  4. data['Prediction'] = knn.predict(X_test)

线性回归算法

  1. from sklearn.linear_model import LinearRegression
  2. lr = LinearRegression()

SVM分类方法

  1. from sklearn.svm import SVC
  2. classifier = SVC()

4 模型评估:

  1. from sklearn.metrics import classification_report
  2. # 6模型评估__包含了
  3. print(classification_report(data['True_label'], data['Prediction']))

完整代码如下:

  1. import pandas as pd
  2. from sklearn import datasets
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.neighbors import KNeighborsClassifier
  5. from sklearn.metrics import classification_report
  6. # 1数据准备
  7. iris = datasets.load_iris()
  8. iris_X = iris.data
  9. iris_Y = iris.target
  10. iris_data = pd.DataFrame(iris.data, columns=['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度'])
  11. iris_data['种类'] = iris.target
  12. iris_data.to_excel('鸢尾花数据集.xlsx', index=None)
  13. iris = pd.read_excel('鸢尾花数据集.xlsx')
  14. X = iris[['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度']]
  15. Y = iris['种类']
  16. # 2数据集划分
  17. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_stae=42)
  18. # 3模型选择,常用的有knn、决策树、线性回归等方法
  19. knn = KNeighborsClassifier()
  20. # 4投喂数据
  21. knn.fit(X_train, Y_train)
  22. # 5预测数据
  23. data = pd.DataFrame()
  24. data['True_label'] = Y_test
  25. data['Prediction'] = knn.predict(X_test)
  26. # 6模型评估__包含了
  27. print(classification_report(data['True_label'], data['Prediction']))

(三)sklearn数据预处理的方法

  • sklearn.preprocessing:数据预处理模块
  • sklearn.impute:缺失值的填充
  • 统一步骤:

1 实例化:确定使用的方法

2拟合转换数据 fit_transform

1.数据归一化和标准化:

归一化和标准化的具体区别:

(1)归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。而标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。

(2)从输出范围角度来看, 归一化的输出结果必须在 0-1 间。而标准化的输出范围不受限制。通常情况下在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。标准化更好保持了样本间距,且更符合统计学假设。

归一化和标准化的相同点:

它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

2.数据归一化和标准化的方法及应用:

  • Z-score标准化:
  • Max-Min归一化:
  • MaxAbs标准化:
  1. from sklearn import preprocessing
  2. zscore = preprocessing.StandardScaler()#设置Zscore标准化对象
  3. X_scaled=zscore.fit_transform((X_train))#数据标准化处理,fit是拟合,transform是变换
  4. minmax=preprocessing.MinMaxScaler()#设置MaxMin归一化对象
  5. X_scaled=minmax.fit_transform((X_train))#数据归一化处理
  6. maxabs=preprocessing.MaxAbsScaler()#设置MaxAbs归一化对象
  7. X_scaled=maxabs.fit_transform(X_train)#数据归一化处理

        面对数值型数据,把数据统一标准非常重要,机器学习中需要用到归一化的算法有:

  • 需要归一化:线性回归、knn、kmeans、支持向量机等,基于距离度量的算法,
  • 不需要归一化:朴素贝叶斯、决策树、随机森林,基于概率进行计算,不依赖特征的距离或线性计算

2.   缺失值填充

  1. 查询字段是否有缺失值:data.info()  __ 注意data需要是dataframe的格式
  2. 填充column:(保证数据是二维的)
  3. 可以进行中位数、均值、众数以及常数填充
  1. from sklearn.impute import SimpleImputer
  2. imp_mean = SimpleImputer()#实例化。默认均值填补
  3. imp_median = SimpleImputer(strategy="median")#用中位数填补
  4. imp_0 = SimpleImputer(strategy="constant",fill_value=0)#用0填补imp_mode=SimpleImpute(strategy="most_frequent")#众数填充
  5. #最后进行拟合变化:__.fit_transform()
  6. imp_mean = imp_mean .fit_transform()
  7. imp_median = imp_median .fit_transform()
  8. imp_0 = imp_0 .fit_transform()
  9. imp_mode=imp_mode.fit_transform()
补充:pandas和numpy也可以进行缺失值的填充以及删除

填充

  1. data1.loc[:,"Age"]=data1.loc[:,"Age"].fillna(data1.loc[:,"Age"].median())#使用中位数填充
  2. #.fillna 直接在DataFrame里进行填充

删除

  1. data1.dropna(axis=0,inplace=True)
  2. #参数inplace,为True表示在原数据集上进行修改,为False表示生成一个复制对象,不修改原数据,默认False

3.分类型特征:编码与哑变量

  • 为什么要进行数据编码?

机器学习中的大多数算法是基于数值型数据,在fit的时候要求导入数组或矩阵,不能处理文字数据(sklearn中有专门用来处理文字的算法除外)。因此要对文字性数据进行编码,使用算法和库。

  • 怎么进行编码呢?
1)对标签进行编码
  1. from sklearn.preprocessing import LableEncoder
  2. le=LableEncoder()#实例化
  3. num_label=le.fit_transform(data)#拟合转换数据
  4. text_label=le.inverse_transform(label)#逆转,变回原始标签
2)对分类特征进行编码
有序变量

将分类特征转换称为分类数值。

  1. from sklearn.preprocessing import OrdinalEncoder
  2. feature_encoder=OrdinalEncoder() #实例化
  3. data=feature_encoder.fit_transform(data)#拟合并转换
  4. #熟练之后可以写成:
  5. data=OrdinalEncoder().fit_transform(data)
哑变量:“有你就没有我”的不等概念 —— 独热编码

如性别,需要转换为哑变量。

  1. from sklearn.preprocessing import OneHotEncoder
  2. OneHotEncoder(categories="auto").fit_transform(X).toarray()#将结果转成数组,显示结果
  3. #inverte_transform()依旧可以还原数组
总结:分类标签编码、分类特征编码、独热编码

4.处理连续型特征:二值化与分段

(1)二值化

例如:将年龄特征,大于30岁以上的标为1,小于的标为0

  1. from sklearn.preprocessing import Binarizer
  2. transformer = Binarizer(threshold=30).fit_transform(x)#将30以上的化为1,30以下的化为0

先学这么多吧 学无止境~感觉sklearn才认识了个皮毛~~~~



学习来源:以下是我学习的两篇文章,结合起来对sklearn学习,代码小白学习数据分析的笔记心得,大神路过求指点,同道中人一块进步

【机器学习基础 3】 sklearn库-CSDN博客

sklearn学习,一步步带你做出三个入门案例鸢尾花分类、波士顿房价预测、手写数字识别,简单易懂。_基于scikit-learn库的分类算法做波士顿房价预测-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/485273
推荐阅读
相关标签
  

闽ICP备14008679号