Scikit-learn快速入门教程和实例(一)(二)

Scikit-learn快速入门教程和实例(一)

 

image.png

一,什么是SKlearn

SciKit learn的简称是SKlearn,是一个python库,专门用于机器学习的模块。
以下是它的官方网站,文档等资源都可以在里面找到http://scikit-learn.org/stable/#。
SKlearn包含的机器学习方式:
分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器学习方法。
关于SKlearn的安装,网上教程很多,再次不赘述。建议使用Anaconda,可以方便的安装各种库。
Anaconda教程:http://python.jobbole.com/87522/
SKlearn给出了如何选择正确的方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7BuZ91ds-1574331016532)(https://morvanzhou.github.io/static/results/sklearn/2_1_1.png)]
官网清晰图:
http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
图表对于什么样的问题,采用什么样的方法给出了清晰的描述,包括数据量不同的区分。

二,SKlearn的强大数据库

数据库网址:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets
里面包含了很多数据,可以直接拿来使用。
image.png
例如:

1.鸢尾花数据集

打开里面的鸢尾花数据集,我们可以看到页面上同样有调用示例:

#调用模块
from sklearn.datasets import load_iris
data = load_iris()
#导入数据和标签
data_X = load_data.data
data_y = load.data.target

2.波士顿房价数据集

#换种方式调用模块,注意区别
from sklearn import datasets
loaded_data = datasets.load_boston()
#导入数据
data_X = loaded_data.data
data_y = loaded_data.target

而且在SKlearn官网,对于每一个数据集,在后面都给出了,使用该数据集的示例,例如Boston房价数据集:
image.png

三,通用学习模式

SKlearn中学习模式的调用,有很强的统一性,很多都是类似的,学会一个,其他基本差不多。

1.鸢尾花数据集

针对上述已经导入的鸢尾花数据集,继续对其进行分析。

#导入模块
from sklearn.model_selection import train_test_split
from sklearn import datasets
#k近邻函数
from sklearn.neighbors import KNeighborsClassifier
iris = datasets.load_iris()
#导入数据和标签
iris_X = iris.data
iris_y = iris.target
#划分为训练集和测试集数据
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.3)
#print(y_train)
#设置knn分类器
knn = KNeighborsClassifier()
#进行训练
knn.fit(X_train,y_train)
#使用训练好的knn进行数据预测
print(knn.predict(X_test))
print(y_test)

2.波士顿房价数据集

这里,我们调用房价数据集,然后使用线性回归的方法对其进行预测

#同样首先,我们调用模块
#matplotlib是python专门用于画图的库
import matplotlib.pyplot as plt
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(data_X, data_y)

#利用模型,对新数据,进行预测,与原标签进行比较
print(model.predict(data_X[:4,:]))
print(data_y[:4])




SciKit-learn快速入门教程和实例(二)

2018-01-21 14:27:55 linxid 阅读数 3171  收藏 更多

分类专栏: python

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/linxid/article/details/79120144

知乎专栏:https://zhuanlan.zhihu.com/p/33148436

一,sklearn的常用属性和功能

继续上次对波士顿房价预测的讨论,了解模型的属性和功能。

#首先导入库,使用的是线性回归
from sklearn import datasets
from sklearn.linear_model import LinearRegression

#导入波士顿房价数据集
loaded_data = datasets.load_boston()
#data_X是训练数据
data_X = loaded_data.data
#data_y是导入的标签数据
data_y = loaded_data.target

#建立模型,线性回归模型
model = LinearRegression()

#进行数据拟合,通过训练得到模型参数
model.fit(data_X,data_y)
#使用训练过的模型对数据进行预测,预测是前四行的数据
print(mode.predict(data_X[:4,:]))

#输出模型的两个参数,在这里分别指的是,线性回归模型的斜率和截距
print(model.coef_)
print(model.intercept_)

#取出之前定义的模型的参数
print(model.get_params())
#使用均方误差对其进行打分,输出精确度,
#即利用训练好的模型对data_X进行预测,得到预测后,和原本标签进行比较
print(model.score(data_X,data_y))

输出结果 
image.png

二,正规化 Normalization

数据的尺度会有所不同,这会影响机器学习的速度,可以使用正规化,将数据变成范围大致相同的区域。首先说下何为数据标准化。

1.数据标准化

#加载标准化数据的模块
from sklearn import prepocessing
import numpy as np
#建立一个数组,可以看大数据大小比较大
a = np.array([
        [10,2.7,3.6],
        [-100,5,-2],
        [120,20,40],dtype=np.float64
])
#输出标准化后的结果
print(prepossing.scale(a))

结果是:

[[ 0.         -0.85170713 -0.55138018]
[-1.22474487 -0.55187146 -0.852133  ]
[ 1.22474487  1.40357859  1.40351318]]

经过标准化后,数据范围变得大致相同,可以提高我们训练的速度。

2.比较标准化对ML训练的影响

#加载模块
from sklearn import prepocessing
import numpy as np
#加载模块,对数据进行分类
from sklearn.model_ selection import train_test_split
#加载模块,用于产生易分类的数据
from sklearn.datasets.smples_generator import make_classification
#导入SVM模块
from sklearn.svm imoprt SVC
#导入画图模块
import matplotlib.pyplot as plt

#产生一个分类数据集
X, y = make_classification(
        n_samples=300, n_features=2,
        n_reducndant=0, n_informative=2,
        random_state=22, n_clusters_per_class=1
        scale=100
    )
#将产生的数据,在图中画出来
plt.plot.scatter(X[:,0],X[:, 1], c=y)
plt.show()

image.png

未标准化的数据

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
#建立一个模块
clf = SVC()
#训练数据
clf.fit(X_train,y_train)
#利用训练好的模型,比对数据
print(clf.score(X_test, y_test))

对数据标准化后再训练

#首先对数据进行标准化,其他和上面一样
X = preprocessing.scale(X)
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
clf = SVC()
clf.fit(X_train,y_train)
print(clf.score(X_test,y_test)

以上众多内容,参照莫烦教程 
更详细的内容可以去他官网查看。 https://morvanzhou.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值