河南南阳收割机被堵事件:官员缺德,祸患无穷

极目新闻领导公开“记者毕节采访被打”细节:他们打人后擦去指纹

突发!员工跳楼!只拿低保工资!央企设计院集体罢工!

退休后的温家宝

突发!北京某院集体罢工!

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

Python数据分析常见库介绍之Scikit-Learn

胡萝卜酱 DataGo数据狗 2022-07-01

往期回顾:

Python数据分析常见库介绍之Numpy

Python数据分析常见库介绍之Scipy

Python数据分析常见库介绍之Pandas

Python数据分析常见库介绍之Matplotlib


Scikit-Learn是Python下一个机器学习相关的库,它提供了强大的机器学习工具,包括数据预处理、分类、回归、聚类、预测和模型分析等。Scikit-Learn依赖于numpy、scipy和matplotlib,因此,需要提前安装这些库才能安装好Scikit-Learn,在Python里面,Scikit-Learn写作sklearn库。

创建一个机器学习的模型很简单,如下:

代码示例

  1. from sklearn.linear_model import LinearRegression #导入线性回归方程

  2. model = LinearRegression() #建立线性回归方程

  3. print (model)


  1. 所有模型提供的接口

    model.fit():训练模型,对于监督模型来说是fit(X,Y),对于非监督模型是fit(X)。

  2. 监督模型提供的接口

    model.predict(X_new):预测新样本。

    model.predict_proba(X_new):预测概率,仅对某些模型有用(比如线性规划)。

    model.score():得分越高,fit越好。

  3. 非监督模型提供的接口

    model.transform():从数据中学到新的“基空间”。

    model.fit_transform():从数据中学到新的基并将这个数据按照这组“基”进行转换。

    (上述内容参考于《Python数据分析与挖掘实战》一书)

数据集

Scikit-Learn库提供了许多数据集,包括:

数据集

代码

自带的小数据集

sklearn.datasets.load_<name>

可在线下载的数据集

sklearn.datasets.fetch_<name>

计算机生成的数据集

sklearn.datasets.make_<name>

svmlight/libsvm格式的数据集

sklearn.datasets.load_svmlight_file(...)

从买了data.org在线下载获取的数据集

sklearn.datasets.fetch_mldata(...)

以常用的鸢尾花数据集为例,它是自带的小数据集,包含150个鸢尾花的观测值:萼片长度、宽度,花瓣长度和宽度,还有它们的亚属:山鸢尾(setosa,label=0)变色鸢尾(versicolor,label=1)和维吉尼亚鸢尾(virginica,label=2)。

代码示例

  1. from sklearn.datasets import load_iris

  2. #加载数据集

  3. iris=load_iris()

  4. print (iris.keys())  

  5. #输出结果 dict_keys(['target', 'DESCR', 'data', 'target_names', 'feature_names'])

  6. #数据的条数和维数

  7. print(iris.data.shape)    #输出结果 (150, 4)

  8. import numpy as np

  9. print(iris.target_names)  #输出: ['setosa' 'versicolor' 'virginica']

  10. np.bincount(iris.target)  #输出: array([50, 50, 50], dtype=int64)


数据可视化

  1. import matplotlib.pyplot as plt

  2. #以第3个索引为划分依据,x_index的值可以为0,1,2,3

  3. x_index=3

  4. color=['blue','red','green']

  5. for label,color in zip(range(len(iris.target_names)),color):

  6.    plt.hist(iris.data[iris.target==label,x_index],label=iris.target_names[label],color=color)

  7. plt.xlabel(iris.feature_names[x_index])

  8. plt.legend(loc="Upper right")

  9. plt.show()

  10. #画散点图,第一维的数据作为x轴和第二维的数据作为y轴

  11. x_index=0

  12. y_index=1

  13. colors=['blue','red','green']

  14. for label,color in zip(range(len(iris.target_names)),colors):

  15.    plt.scatter(iris.data[iris.target==label,x_index],

  16.                iris.data[iris.target==label,y_index],

  17.                label=iris.target_names[label],

  18.                c=color)

  19. plt.xlabel(iris.feature_names[x_index])

  20. plt.ylabel(iris.feature_names[y_index])

  21. plt.legend(loc='upper left')

  22. plt.show()



线性回归

  1. #导入鸢尾花数据集并获取前两列数据,即获取花瓣的长和宽,分别存储至x和y数组

  2. x = [n[0] for n in iris.data]

  3. y = [n[1] for n in iris.data]

  4. x = np.array(x).reshape(len(x),1)

  5. y = np.array(y).reshape(len(y),1)

  6. #导入线性回归模型,进行训练和预测

  7. from sklearn.linear_model import LinearRegression

  8. clf = LinearRegression()

  9. clf.fit(x,y)

  10. pre = clf.predict(x)

  11. #评估算法

  12. print (u"系数", clf.coef_) #系数 [[-0.05726823]]

  13. print (u"截距", clf.intercept_) #截距 [3.38863738]

  14. print (np.mean(y-pre)**2) #1.9199121408845605e-31

  15. #假设现在存在一个花萼长度为6.0的花,需要预测其花萼宽度

  16. print (clf.predict([[6.0]])) #[[3.04502798]]


Kmean聚类

  1. #导入kmeans聚类模型

  2. from sklearn.cluster import KMeans      

  3. clf = KMeans()  

  4. clf.fit(iris.data, iris.target)  

  5. predicted = clf.predict(iris.data)  

  6. #获取花卉两列数据集  

  7. X = iris.data  

  8. X1 = [x[0] for x in X]  

  9. X2 = [x[1] for x in X]  

  10. #做散点图

  11. plt.scatter(X1, X2, c=predicted, s=200,cmap=plt.cm.Paired)  

  12. plt.show()



上面只是简单介绍了两种算法,除去之外,Scikit-Learn库还提供了支持向量机,朴素贝叶斯等等多种机器学习算法。你能快速的调用库,并进行数据挖掘。


数据分析常见库的阶段就此结束了,我们基本掌握了数据分析最常使用的工具,在下一阶段,我们将开始进行数据探索。


文章有问题?点此查看未经处理的缓存