速通sklearn库

速通sklearn库

前言

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

说明

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

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

目录结构


在这里插入图片描述

1. 下载与流程

1.1 下载库

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

pip install sklearn

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

numpy、scipy、matplotlib、pandas

​ 也是通过pip下载。

1.2 使用流程

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

1. 导入对应模型
2. 数据处理
3. 创建模型
4. 训练模型
5. 预测、打印、保存参数等后处理操作

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

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

​ 举个例子,来自我的博客《机器学习案例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 常用机器学习方法

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

模型名字 所属库 方法名 重要参数
KNN sklearn.neighbors KNeighborsClassifier n_neighbors指定K值
KD树 sklearn.neighbors KNeighborsClassifier algorithm=‘kd_tree’
线性回归 sklearn.linear_model LinearRegression
线性回归 sklearn.linear_model SGDRegressor loss:损失类型
learning_rate 学习率
逻辑回归 sklearn.linear_model LogisticRegression
决策树 sklearn.tree DecisionTreeClassifier criterion=‘gini / entropy’ 指定划分标准
min_samples_split 内部节点划分最小样本数
min_samples_leaf 叶节点最小样本数
max_depth 最大深度
支持向量机 sklearn.svm SVC
LinearSVC
C:正则化因子
kernel: 核函数,RBF/Linear/Poly/Sigmoid
degree: 针对多项式核函数,指定次数
主成分分析 sklearn.decomposition PCA n_components 整数为输出特征数,小数为保留百分之多说的信息
随机森林 sklearn.ensemble RandomForestClassifier n_estimators : 树木数量
Criterion : 默认基尼值
max_depth : 最大深度
oob_score=True 使用没有被选中的数据进行验证
XGBoost xgboost(单独的库) xgboost 参数较多,看后面的案例
朴素贝叶斯 sklearn.naive_bayes MultinomialNB alpha : 拉普拉斯平滑系数 1.0
高斯过程回归 sklearn.gaussian_process GaussianProcessRegressor

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

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

猜你喜欢

转载自blog.csdn.net/weixin_46676835/article/details/131727056