速通sklearn库

速通sklearn库

速通sklearn库

前言

​ 最近在复习之前学习过的知识点,因此想到把学过的总结一下,方便后面再次复习,所以有了这个系列。

说明

​ 由于标题写的是“速通”,因此我的想法是可以让大家看完这篇文章,可以上手matplotlib库,并且明白怎么去实现自己想要的效果。

​ 有写错误/理解错误的地方,请大家批评指正。有任何问题,欢迎评论区留言,博主看到有空就会回复。

目录结构

文章目录

速通sklearn库1. 下载与流程1.1 下载库1.2 使用流程

2. 常用的机器学习方法2.1 常用机器学习方法2.2 训练模型方法2.3 模型预测2.4 模型评估2.5 模型的常用方法和属性

3. 其它常用方法3.1 划分训练集和验证集3.2 数据标准化3.3 交叉验证3.4 数据归一化3.5 均方误差3.6 自带数据集加载3.7 one-hot编码

4. 案例5. 总结

1. 下载与流程

1.1 下载库

​ sklearn是一个第三方库,其包含了常用的机器学习方法。下载方法:

pip install sklearn

​ 不过,在下载sklearn前,需要下载一些基础的库:

numpy、scipy、matplotlib、pandas

​ 也是通过pip下载。

1.2 使用流程

​ 可以说机器学习案例的使用流程基本上是固定的,常见的流程如下:

1. 导入对应模型

2. 数据处理

3. 创建模型

4. 训练模型

5. 预测、打印、保存参数等后处理操作

​ 对上面的流程进行说明:

首先,确定你要用何种机器学习模型,就可以确定导入的方法为何种其次,需要加载原始数据,并进行数据的清洗(降维、划分等等)根据需求,创建出模型,伪代码为model = xxx()进行训练,这一步的伪代码为model.fit(x,y)后处理,比如看看训练完毕的模型在测试集上的效果如何,或者保存已经训练好的参数等等。

​ 举个例子,来自我的博客《机器学习案例1:KNN实现鸢尾花分类》,代码如下:

# author: baiCai

# 1. 导包

import sklearn

from sklearn.neighbors import KNeighborsClassifier

from sklearn import model_selection

from sklearn.datasets import load_iris

from matplotlib import pyplot as plt

# 2. 加载数据

data = load_iris()

# print(data) # 返回的字典

# 划分数据集 8:2

x_train,x_test,y_train,y_test = model_selection.train_test_split(data['data'],data['target'],test_size=0.2,random_state=22)

# print(x_train.shape) # 120,4

# print(y_train.shape) # 120,

# # 3. 创建模型

# model = KNeighborsClassifier(n_neighbors=5)

# model.fit(x_train,y_train)

# # 评估

# score = model.score(x_test,y_test)

# print('测试集准确率:',score)

# # 评估2

# y_predict = model.predict(x_test)

# print('测试集对比真实值和预测值:',y_predict == y_test)

# 探究k值影响

model_new = {

KNeighborsClassifier(n_neighbors=2),

KNeighborsClassifier(n_neighbors=3),

KNeighborsClassifier(n_neighbors=4),

KNeighborsClassifier(n_neighbors=5),

KNeighborsClassifier(n_neighbors=6),

KNeighborsClassifier(n_neighbors=7),

KNeighborsClassifier(n_neighbors=8),

KNeighborsClassifier(n_neighbors=9),

KNeighborsClassifier(n_neighbors=10),

}

score_list = []

# 4. 训练模型

for model in model_new:

model.fit(x_train,y_train)

score = model.score(x_test,y_test)

score_list.append(score)

# 5. 后处理

# 画出图形

# 处理中文显示问题

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.figure()

plt.bar(range(2,11),score_list)

plt.title('不同K值准确率')

plt.show()

# print(score_list)

# 画出训练集

# 处理中文显示问题

# plt.rcParams['font.sans-serif'] = ['SimHei']

# plt.figure()

# c = ['r','b','g'] # 设置三个颜色

# color = [c[y] for y in y_train] # 为不同的标签设置颜色,比如0--r--红色

# plt.scatter(x_train[:,0],x_train[:,1],c=color)

# plt.title('训练集图')

# plt.xlabel('花萼长')

# plt.ylabel('花萼宽')

# plt.show()

2. 常用的机器学习方法

只要熟悉了sklearn的使用流程,那么你离熟悉它就差了一些方法的了解。这里我们先了解一下常用的机器学习方法所属库、名字以及重要参数

2.1 常用机器学习方法

​ 看下表,是我自己总结的:

模型名字所属库方法名重要参数KNNsklearn.neighborsKNeighborsClassifiern_neighbors指定K值KD树sklearn.neighborsKNeighborsClassifieralgorithm=‘kd_tree’线性回归sklearn.linear_modelLinearRegression线性回归sklearn.linear_modelSGDRegressorloss:损失类型learning_rate 学习率逻辑回归sklearn.linear_modelLogisticRegression决策树sklearn.treeDecisionTreeClassifiercriterion=‘gini / entropy’ 指定划分标准min_samples_split 内部节点划分最小样本数min_samples_leaf 叶节点最小样本数max_depth 最大深度支持向量机sklearn.svmSVCLinearSVCC:正则化因子kernel: 核函数,RBF/Linear/Poly/Sigmoiddegree: 针对多项式核函数,指定次数主成分分析sklearn.decompositionPCAn_components 整数为输出特征数,小数为保留百分之多说的信息随机森林sklearn.ensembleRandomForestClassifiern_estimators : 树木数量Criterion : 默认基尼值max_depth : 最大深度oob_score=True 使用没有被选中的数据进行验证XGBoostxgboost(单独的库)xgboost参数较多,看后面的案例朴素贝叶斯sklearn.naive_bayesMultinomialNBalpha : 拉普拉斯平滑系数 1.0高斯过程回归sklearn.gaussian_processGaussianProcessRegressor

​ 比如你要用支持向量机,那么可以按下述代码创建模型:

# 1. 导入模型

from sklearn.svm import SVC

# 2. 创建模型

model = SVC(kernel='rbf')

2.2 训练模型方法

​ 上述方法创建对象后,即可进行模型训练,一般模型训练代码都如下:

model.fit(x_train,y_train)

​ 当然使用的是训练集进行训练。

2.3 模型预测

​ 模型预测非常简单,方法都如下:

y_pred = model.predict(x_test)

​ 返回的就是模型预测值,如果是回归模型则返回的是预测值,如果是分类模型返回的就是概率值。

2.4 模型评估

​ 由于模型的评估有多种标准,因此也有多种方法。不过机器学习方法创建的对象,自带一个通用评估方法,即:

result = model.score(x_test,y_test)

​ 对于分类模型,它返回的就是分类的准确率。对于回归模型,它返回的就是拟合系数R2值(判断模型的拟合好坏)。

​ 而对于其它标准,比如均方误差等,就需要带入具体的方法进行使用。

2.5 模型的常用方法和属性

w参数

coef_: 对应 X 各个特征的系数。

b截距

intercept_: intercept_ 表示模型学习到的截距值。

训练模型

fit(X, y): 训练模型

预测

predict(X): 使用模型进行预测

准确率

score(X, y),返回准确率值 。

预测概率值:分类算法

predict_proba(X): 输出分类概率。

迭代次数

n_iter_:实际迭代次数。

3. 其它常用方法

上面的方法主要是创建模型和训练模型这块的内容,但是还有一大块的内容属于数据处理。

3.1 划分训练集和验证集

​ 方法如下:

X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.5, random_state=0)

'''

前两个参数:x和y数据

第三个参数: 测试集的比例

第四个参数: 随机数种子

'''

3.2 数据标准化

​ 方法如下:

from sklearn import preprocessing

# 数据标准化: 即化为均值为0,方差为1的分布

standard = preprocessing.StandardScaler()

# 将训练集和测试集x数据进行表转化

x_train = standard.fit_transform(x_train)

x_test = standard.fit_transform(x_test)

3.3 交叉验证

方式一:

from sklearn.model_selection import cross_val_score

# 创建一个模型

clf = xxx()

# 开始验证:替代了模型的fit和score

scores = cross_val_score(clf, x, y, cv=5)

'''

参数:

clf : 模型

x : 数据集

y : 标签

cv : 指定验证次数,即k折

'''

方式二:针对数据

from sklearn.model_selection import KFold

# 数据

x = [xxxxxx]

# K折

kf = KFold(n_splits=2) # 指定次数

# 划分

for train, test in kf.split(X):

xxx

3.4 数据归一化

​ 方法如下:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler() #实例化

result_ = scaler.fit_transform(data)

'''

参数:

feature_range=[5,10],默认范围[0,1]

'''

3.5 均方误差

​ 用于回归模型的评估,方法如下:

sklearn.metrics.mean_squared_error(y_true, y_pred)

3.6 自带数据集加载

鸢尾花数据集

from sklearn.datasets import load_iris

data = load_iris()

波士顿数据

from sklearn.datasets import load_boston

# 加载数据

data = load_boston()

3.7 one-hot编码

​ 主要用于NLP领域,方法如下:

from sklearn.preprocessing import OneHotEncoder

one_hot = OneHotEncoder(sparse=False)

# 参数: sparse=False,直接返回array对象,否则还需要转为array对象

# 开始转换(只针对y数据,不针对x数据)

y_test1 = one_hot.fit_transform(y_test.reshape(-1, 1))

y_pre1 = one_hot.fit_transform(y_pre.reshape(-1, 1))

4. 案例

​ 这一部分建议直接看我之前的博客,有10个小案例,可以通过我主页的机器学习专栏进入。

5. 总结

​ sklearn库其实比较简单(我们使用的比较简单),熟悉了固定流程,就只需要机器学习方法名再加上一些数据处理方法就可以套入使用。

相关推荐

怀旧服风歌花buff刷新时间
365bet娱乐场888

怀旧服风歌花buff刷新时间

📅 10-03 👁️ 1055
什么样的酸奶才是好酸奶?选购时必知技巧!
28365365体育在线投注

什么样的酸奶才是好酸奶?选购时必知技巧!

📅 08-18 👁️ 4101
DNF: 艾肯与拍卖行战士装备选择详解
28365365体育在线投注

DNF: 艾肯与拍卖行战士装备选择详解

📅 10-08 👁️ 6665