首页 > 其他 > 详细

机器学习-Sklearn

时间:2019-02-09 16:47:04      阅读:218      评论:0      收藏:0      [点我收藏+]

Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.

Sklearn 包含了很多种机器学习的方式:

Classification 分类
Regression 回归
Clustering 非监督分类
Dimensionality reduction 数据降维
Model Selection 模型选择
Preprocessing 数据预处理
我们总能够从这些方法中挑选出一个适合于自己问题的, 然后解决自己的问题.

安装

Scikit-learn (sklearn) 

Windows 注意事项 
如果你是 Windows 用户, 你也可以选择使用 Anaconda 来安装所有 python 的科学计算模块. Anaconda的相关资料在这

一般使用

1、选择学习方法:看图

Sklearn 官网提供了一个流程图, 蓝色圆圈内是判断条件,绿色方框内是可以选择的算法:

技术分享图片

从 START 开始,首先看数据的样本是否 >50,小于则需要收集更多的数据。

由图中,可以看到算法有四类,分类,回归,聚类,降维。

其中 分类和回归是监督式学习,即每个数据对应一个 label。

聚类 是非监督式学习,即没有 label。
另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。
例如
20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,
它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。
然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。 当然还要考虑数据的大小,例如 100K 是一个阈值。 可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD。

回归:regression 英 /r?‘gre?(?)n/  /r?‘ɡr???n/ 

聚类:clustering  /‘kl?st?r??/  /‘kl?st?/ 

维度:dimensionality  /d?,men??‘næl?t?/  /da?m?n??‘næl?ti/ 

2、通用学习模式

要点
导入模块
创建数据
建立模型-训练-预测

要点 

sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一。

Sklearn 把所有机器学习的模式整合统一起来了,学会了一个模式就可以通吃其他不同类型的学习模式。

例如,分类器,

Sklearn 本身就有很多数据库,可以用来练习。 以 Iris 的数据为例,这种花有四个属性,花瓣的长宽,茎的长宽,根据这些属性把花分为三类。

我们要用 分类器 去把四种类型的花分开。
# 导入模块
import pandas as pd
# sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,(yuan)鸢尾花数据集就是其中之一。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 创建数据
# 加载 iris 的数据,把属性存在 X,类别标签存在 y
iris = datasets.load_iris()
iris_X = iris.data      
iris_y = iris.target
# 观察一下数据集,X 有四个属性,y 有 0,1,2 三类:
print(iris_X[:2, :])
print(iris_y)
技术分享图片
# 把数据集分为训练集和测试集,其中 test_size=0.3,即测试集占总数据的 30%:
X_train, X_test, y_train, y_test = train_test_split(
    iris_X, iris_y, test_size=0.3)
# 可以看到分开后的数据集,顺序也被打乱,这样更有利于学习模型:
print(y_train)
技术分享图片
# 建立模型-训练-预测

# 定义模块方式 KNeighborsClassifier(), 用 fit 来训练 training data,这一步就完成了训练的所有步骤, 后面的 knn 就已经是训练好的模型,可以直接用来 predict 测试集的数据, 对比用模型预测的值与真实的值,可以看到大概模拟出了数据,但是有误差,是不会完完全全预测正确的。、
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
print(knn.predict(X_test))
print(y_test)
技术分享图片

 

3、sklearn 强大数据库

要点
导入模块
导入数据-训练模型
创建虚拟数据-可视化

学习资料:

今天来看 Sklearn 中的 datasets,很多而且有用,可以用来学习算法模型。

eg: boston 房价, 糖尿病, 数字, Iris 花。

也可以生成虚拟的数据,例如用来训练线性回归模型的数据,可以用函数来生成。
from __future__ import print_function
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# 导入数据-训练模型 
# 用 datasets.load_boston() 的形式加载数据,并给 X 和 y 赋值,这种形式在 Sklearn 中都是高度统一的。
loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_y = loaded_data.target

# 定义模型。
model = LinearRegression()# 线性回归
model.fit(data_X, data_y)

# 再打印出预测值,这里用 X 的前 4 个来预测,同时打印真实值,作为对比,可以看到是有些误差的。

print(model.predict(d
print(model.predict(data_X[:4, :]))
print(data_y[:4])
# 为了提高准确度,可以通过尝试不同的 model,不同的参数,不同的预处理等方法,入门的话可以直接用默认值。
                    
# 创建虚拟数据-可视化
# 用函数来建立 100 个 sample,有一个 feature,和一个 target,这样比较方便可视化。    
# 用 scatter(散点图) 的形式来输出结果。                    
X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)
plt.scatter(X, y)
plt.show()
技术分享图片
# 可以看到用函数生成的 Linear Regression 用的数据。

# noise 越大的话,点就会越来越离散,例如 noise 由 10 变为 50.
X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=50)
plt.scatter(X, y)
plt.show()

技术分享图片


noise float, optional (default=0.0)

The standard deviation of the gaussian noise applied to the output.

高斯噪声对输出的标准差。

4、 sklearn 常用属性与功能

训练和预测
参数和分数
from sklearn import datasets
from sklearn.linear_model import LinearRegression

loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_y = loaded_data.target

model = LinearRegression()
# 训练和预测
# 接下来 model.fit 和 model.predict 就属于 Model 的功能,用来训练模型,用训练好的模型预测。
model.fit(data_X, data_y)

print(model.predict(data_X[:4, :]))
技术分享图片
# 参数和分数

# 然后,model.coef_ 和 model.intercept_ 属于 Model 的属性, 例如对于 LinearRegressor 这个模型,
# 这两个属性分别输出模型的斜率和截距(与y轴的交点)。
print(model.coef_)
print(-----------------)
print(model.intercept_)
技术分享图片
# model.get_params() 也是功能,它可以取出之前定义的参数。
print(model.get_params())
技术分享图片
# model.score(data_X, data_y) 它可以对 Model 用 R^2 的方式进行打分,输出精确度。
# 关于 R^2 coefficient of determination 可以查看 wiki
print(model.score(data_X, data_y)) # R^2 coefficient of determination
0.7406077428649428
 

 

机器学习-Sklearn

原文:https://www.cnblogs.com/foremostxl/p/10357621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!