[sklearn初体验]初学者通俗易懂

对于学习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则代表:方形,对于高度而言则是一个连续量。

我们再来看看

房价预测
输入:房子的各种属性
输出:房价(连续量)
回归问题 regression
预测天气好坏
输入:代表当前天气的一系列特征(温度、湿度、能见度)
输出: 0 1 (0代表坏天气, 1 代表好天气)
分类问题 classification
所以总的来说,连续量就是回归问题,离散值即是回归问题,这涉及到之后如何选择模型。
二、如何构建映射\模型
1.基于先验知识的推理 专家系统,比如棋牌类游戏AI的编写(基于已有经验来编程的,写了一堆if
else)

 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,)
标签离散,所以是分类问题。
3.2 model_selection
对于一个模型而言,单纯训练是没有意义的,我们必须对所训练的模型进行评估,而评估必须拿模型未见过的模型,因此我们需要对数据集进行分割:训练集+测试集。
训练集用于训练数据
测试集用于评估数据
最简单的方法即是将原始150份数据分割成120份训练集、30份测试集。
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 定义模型

sklearn里面很多很多机 学习模型,每一个基本的机 学习模型对应一个sklearn子库。比如我们比较常见的: 线性模型、SVM、贝叶斯、决策树、随机森林等等。虽然模型种类多,但是他们的调用方法都是一样的!需要注意的即是 需要根据任务类型(分类 or 回归)选择子库中的类,通常情况下,子库类名字为:模型名称+任务(Classifier(分类器)/Regressor(回归器))
例如:DecisionTreeClassifier,DecisionTree就是他的模型名称,而Classifier则是任务。
例:
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()
  训练非常简单,sklearn中所有机 学习模型训练方法都是 fit
# 第四步:训练
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 预测模型

  所有的sklearn模型通过predict方法进 预测:
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必须是向量。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值