sklearn介绍

scikit-learn是数据挖掘与分析的简单而有效的工具。
依赖于NumPy, SciPy和matplotlib。

它主要包含以下几部分内容:

从功能来分:
classification
Regression
Clustering
Dimensionality reduction
Model selection

经常用到的有clustering, classification(svm, tree, linear regression 等), decomposition, preprocessing, metrics等

cluster

阅读sklearn.cluster的API,可以发现里面主要有两个内容:一个是各种聚类方法的class如cluster.KMeans,一个是可以直接使用的聚类方法的函数

sklearn.cluster.k_means(X, n_clusters, init='k-means++', precompute_distances='auto', n_init=10, max_iter=300, verbose=False, tol=0.0001, random_state=None, copy_x=True, n_jobs=1, algorithm='auto', return_n_iter=False)

所以实际使用中,对应也有两种方法。

在sklearn.cluster共有9种聚类方法,分别是

AffinityPropagation: 吸引子传播
AgglomerativeClustering: 层次聚类
Birch
DBSCAN
FeatureAgglomeration: 特征聚集
KMeans: K均值聚类
MiniBatchKMeans
MeanShift
SpectralClustering: 谱聚类
拿我们最熟悉的Kmeans举例说明:

采用类构造器,来构造Kmeans聚类器

首先API中KMeans的构造函数为:

sklearn.cluster.KMeans(n_clusters=8,init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')
参数的意义:

n_clusters:簇的个数,即你想聚成几类
init: 初始簇中心的获取方法
n_init: 获取初始簇中心的更迭次数
max_iter: 最大迭代次数(因为kmeans算法的实现需要迭代)
tol: 容忍度,即kmeans运行准则收敛的条件
precompute_distances:是否需要提前计算距离
verbose: 冗长模式(不太懂是啥意思,反正一般不去改默认值)
random_state: 随机生成簇中心的状态条件。
copy_x: 对是否修改数据的一个标记,如果True,即复制了就不会修改数据。
n_jobs: 并行设置
algorithm: kmeans的实现算法,有:‘auto’, ‘full’, ‘elkan’, 其中 'full’表示用EM方式实现
下面给一个简单的例子:

import numpy as np
from sklearn.cluster import KMeans
data = np.random.rand(100, 3) #生成一个随机数据,样本大小为100, 特征数为3#假如我要构造一个聚类数为3的聚类器
estimator = KMeans(n_clusters=3)#构造聚类器
estimator.fit(data)#聚类
label_pred = estimator.label_ #获取聚类标签
centroids = estimator.cluster_centers_ #获取聚类中心
inertia = estimator.inertia_ # 获取聚类准则的最后值
直接采用kmeans函数:
import numpy as np
from sklearn import cluster
data = np.random.rand(100, 3) #生成一个随机数据,样本大小为100, 特征数为3
k = 3 # 假如我要聚类为3个clusters
[centroid, label, inertia] = cluster.k_means(data, k)
classification

常用的分类方法有:

KNN最近邻:sklearn.neighbors
logistic regression逻辑回归: sklearn.linear_model.LogisticRegression
svm支持向量机: sklearn.svm
Naive Bayes朴素贝叶斯: sklearn.naive_bayes
Decision Tree决策树: sklearn.tree
Neural network神经网络: sklearn.neural_network
那么下面以KNN为例(主要是Nearest Neighbors Classification)来看看怎么使用这些方法:

from sklearn import neighbors, datasets# import some data to play with
iris = datasets.load_iris()
n_neighbors = 15
X = iris.data[:, :2]  # we only take the first two features. We could# avoid this ugly slicing by using a two-dim dataset
y = iris.targetweights = 'distance' # also set as 'uniform'
clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
clf.fit(X, y)# if you have test data, just predict with the following functions
# for example, xx, yy is constructed test data
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # Z is the label_pred

再比如svm:

from sklearn import svm
X = [[0, 0], [1, 1]]
y = [0, 1]#建立支持向量分类模型
clf = svm.SVC()#拟合训练数据,得到训练模型参数
clf.fit(X, y)#对测试点[2., 2.], [3., 3.]预测
res = clf.predict([[2., 2.],[3., 3.]])#输出预测结果值
print (res)
#get support vectors
print ("support vectors:", clf.support_vectors_)#get indices of support vectors
print ("indices of support vectors:", clf.support_ )#get number of support vectors for each class
print ("number of support vectors for each class:", clf.n_support_ )

当然SVM还有对应的回归模型SVR

from sklearn import svm
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = svm.SVR()
clf.fit(X, y)
res = clf.predict([[1, 1]])
print(res)

逻辑回归

from sklearn import linear_model
X = [[0, 0], [1, 1]]
y = [0, 1]
logreg = linear_model.LogisticRegression(C=1e5)#we create an instance of Neighbours Classifier and fit the data.
logreg.fit(X, y)res = logreg.predict([[2, 2]])
print(res)

preprocessing

这一块通常我要用到的是Scale操作。而Scale类型也有很多,包括:

StandardScaler
MaxAbsScaler
MinMaxScaler
RobustScaler
Normalizer
等其他预处理操作
对应的有直接的函数使用:scale(), maxabs_scale(), minmax_scale(), robust_scale(), normaizer()。

import numpy as np
from sklearn import preprocessing
X = np.random.rand(3,4)#用scaler的方法
scaler = preprocessing.MinMaxScaler()
X_scaled = scaler.fit_transform(X)#用scale函数的方法
X_scaled_convinent = preprocessing.minmax_scale(X)

decomposition

NMF

import numpy as np
X = np.array([[1,1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
from sklearn.decomposition import NMF
model = NMF(n_components=2, init='random', random_state=0)
model.fit(X)print(model.components_)
print(model.reconstruction_err_)
print(model.n_iter_)

PCA

import numpy as np
X = np.array([[1,1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
from sklearn.decomposition import PCA
model = PCA(n_components=2)
model.fit(X)print(model.components_)
print(model.n_components_)
print(model.explained_variance_)
print(model.explained_variance_ratio_)
print(model.mean_)
print(model.noise_variance_)

datasets

sklearn本身也提供了几个常见的数据集,如iris, diabetes, digits, covtype, kddcup99, boson, breast_cancer,都可以通过sklearn.datasets.load_iris类似的方法加载相应的数据集。它返回一个数据集。采用下列方式获取数据与标签。

from sklearn.datasets import load_irisiris = load_iris()
X = iris.data
y = iris.target

python之sklearn学习笔记相关推荐

  1. Python——常用Python包的学习笔记

    1 致谢 感谢陈助教的帮助! 2 前言 今天想通过画图展现一下学习参考值的变化情况,在网上看了一下,需要使用plt包,不过又忘了plt是做什么用的了,于是想要记录一下,写一下关于常用Python包的笔 ...

  2. SKlearn学习笔记——XGBoost

    SKlearn学习笔记--XGBoost 1. 概述 1.1 xgboost库与XGB的sklearn API 1.2 XGBoost的三大板块 2. 梯度提升树 2.1 提升集成算法:重要参数 n_ ...

  3. Python量化交易学习笔记(1)

    Python量化交易学习笔记(1) http://zwpython.com/ http://www.topquant.vip/?p=2275 [更多参见] <zwPython,目前最好的py开发 ...

  4. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  5. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  6. python基础入门学习笔记 (2)

    python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...

  7. 关于Python的一些学习笔记(小白式笔记,持续更新)

    关于Python的一些学习笔记 瞎bb: 作为一个计算机专业的学生,Python应该是一门很有必要掌握的语言,但是由于鄙人太懒,一直对Python没有太多了解,但是随着知识的积累以及学业难度的增加,我 ...

  8. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  9. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

最新文章

  1. Android Studio项目引入外部库注意事项(PullToRefresh)
  2. angular 触发 enter事件
  3. Python字符串处理函数
  4. 一文带你领略JS中原型链的精妙设计!
  5. 【Spring学习】Spring简介
  6. leetcode485. 最大连续1的个数 *py:“又是一行就解决了,没意思”
  7. java二维数组的常见初始化
  8. 移动端html搜索怎么写,移动端实现搜索功能
  9. 电脑桌面点任何文件都打开计算机,桌面上的文件全部都打不开
  10. Python:SyntaxError: unexpected EOF while parsing
  11. yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法
  12. 【回文串2】LeetCode 9. Palindrome Number
  13. WINDOWS删除N天前的文件命令forfiles
  14. POI合并单元格后边框显示问题
  15. 点击链接时直接在网页中打开word文档
  16. Frontiers in Pharmacology2020 | MOSES+:分子生成模型的benchmark平台
  17. 如何用计算机打出平方,平方符号在电脑怎么打出来(电脑输入平方符号的2种方法)...
  18. 商业综合体能耗在线监测管理系统_商场管理平台
  19. 打包带走极客时间大数据课程的正确姿势
  20. 【女黑客看《流浪地球2》是什么体验】

热门文章

  1. 我的十余年职业生涯之路
  2. ESXi8.0中NVME硬盘不识别解决方法1,设置直通
  3. 使用C#从图片文件生成图标ICON文件(附源文件)
  4. 日本恐怖片《二重身》核心内容赏析
  5. 虚拟滚动实现(Vue)
  6. 5G时代能给我们带来什么?
  7. 青柠开车Spring Cloud(七) —— 断路器 Hystrix
  8. windows 安装Ubuntu 子系统
  9. 关于HTML学习重点-绝对布局和相对布局总结
  10. 盘古石考核取证复现检材1(??)