对于学习sklearn而言,个人建议可以同时去学习一下numpy。本篇文章如果有什么问题希望各位大神多多指点。
python中是不自带sklearn库的,学习sklearn第一步当然是下载sklearn。这里给出两种方法:
1. 第一种就是熟悉的pip安装,没有的库无脑pip就完事了。
$pip install sklearn
如果下载速度缓慢建议换源下载,我这里用的是清华源。
$pip install sklearn -i https://pypi.tuna.tsinghua.edu.cn/simple
2.第二种方法:下载anaconda,anaconda可以理解为python的一个傻瓜包,里面包含了python大多数库,下载和配置环境流程也比较简单,这里更加建议下载anaconda。
有了sklearn库后,我们便可以真正的去开始sklearn学习了。
一、分类(classification)与回归(regression)
机器学习实际上可分为两大问题,一类是分类问题,一类则是回归问题。我们应当如何去描述一条数据,比如对于苹果来说,它的形状、颜色、高度、宽度。形状为圆形、方形,颜色为红色、青色、黄色,高度与宽度则为一个区间,无法枚举。任何的数据都可以由若干个属性去描述,而属性则分为离散与连续。
对于苹果而言形状只有两种取值(我认为是这样的)0代表:圆形,1则代表:方形,对于高度而言则是一个连续量。
我们再来看看
![](https://i-blog.csdnimg.cn/blog_migrate/eb2dc00d20fc60d3f8eab3a192e652f7.png)
2.基于机器学习推理
如何训练模型呢,机器学习理论就是教我们如何利用数据来训练模型。
三、sklearn简述
sklearn给出了需要的机器学习模型、训练方法、评估方法等一系列,sklearn是由若干个字库组成的。下面就介绍如何通过sklearn去训练、评估模型。
3.1 datasets子库
该字库可以拿到经典的数据集
函数名:load_<数据集名称>
例:
from sklearn.datasets import load_iris
X,y = load_iris(return_X_y = True)
print(X.shape,y.shape)
out:
(150, 4) (150,)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
print("train", X_train.shape)
print("test ", X_test.shape)
3.3 定义模型
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# 第一步:载入数据
X, y = load_iris(return_X_y=True)
# 第二步:分割数据 > 训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 第三步:定义模型(根据数据对应的任务是分类还是回归)
model = DecisionTreeClassifier()
# 第四步:训练
model.fit(X=X_train, y=y_train)
而评估都是score:
# 第五步:评估
acc = model.score(X=X_test, y=y_test)
print("测试正确率:", acc)
out:
测试正确率: 0.9333333333333333
3.4 保存模型(持久化)
通过joblib实现模型保持
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
import joblib
# 第一步:载入数据
X, y = load_iris(return_X_y=True)
# 第二步:分割数据 > 训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 第三步:定义模型(根据数据对应的任务是分类还是回归)
model = DecisionTreeClassifier()
# 第四步:训练
model.fit(X=X_train, y=y_train)
# 第五步:评估
acc = model.score(X=X_test, y=y_test)
print(acc)
# 保存模型
joblib.dump(
value=model, # 模型对象
filename="foo.joblib" # 保存路径
)
3.5 预测模型
import joblib
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
# sklearn的X输入必须是矩阵,标签必须是向量!
test_x = [X[0], X[100], X[50]]
test_y = [y[0], y[100], y[50]]
model : DecisionTreeClassifier = joblib.load("foo.joblib")
# 通过predict来预测
result = model.predict(test_x)
print("预测结果: ", result.tolist())
print("真实结果:", test_y)
对于大多数模型而言,我们可以通过调整模型参数从而去提高模型的正确率,对于不同的模型我们可以具体的去查看他们的相应的参数所代表的具体意义,本篇文章只是对于机器学习的一个基础知识的了解,需要注意的地方即是sklearn中的X必须是一个矩阵,而标签y必须是向量。