python之sklearn学习笔记
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学习笔记相关推荐
- Python——常用Python包的学习笔记
1 致谢 感谢陈助教的帮助! 2 前言 今天想通过画图展现一下学习参考值的变化情况,在网上看了一下,需要使用plt包,不过又忘了plt是做什么用的了,于是想要记录一下,写一下关于常用Python包的笔 ...
- SKlearn学习笔记——XGBoost
SKlearn学习笔记--XGBoost 1. 概述 1.1 xgboost库与XGB的sklearn API 1.2 XGBoost的三大板块 2. 梯度提升树 2.1 提升集成算法:重要参数 n_ ...
- Python量化交易学习笔记(1)
Python量化交易学习笔记(1) http://zwpython.com/ http://www.topquant.vip/?p=2275 [更多参见] <zwPython,目前最好的py开发 ...
- python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)
[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- python基础入门学习笔记 (2)
python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...
- 关于Python的一些学习笔记(小白式笔记,持续更新)
关于Python的一些学习笔记 瞎bb: 作为一个计算机专业的学生,Python应该是一门很有必要掌握的语言,但是由于鄙人太懒,一直对Python没有太多了解,但是随着知识的积累以及学业难度的增加,我 ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
- Python 基础知识学习笔记——OpenCV(1)
Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...
最新文章
- Android Studio项目引入外部库注意事项(PullToRefresh)
- angular 触发 enter事件
- Python字符串处理函数
- 一文带你领略JS中原型链的精妙设计!
- 【Spring学习】Spring简介
- leetcode485. 最大连续1的个数 *py:“又是一行就解决了,没意思”
- java二维数组的常见初始化
- 移动端html搜索怎么写,移动端实现搜索功能
- 电脑桌面点任何文件都打开计算机,桌面上的文件全部都打不开
- Python:SyntaxError: unexpected EOF while parsing
- yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法
- 【回文串2】LeetCode 9. Palindrome Number
- WINDOWS删除N天前的文件命令forfiles
- POI合并单元格后边框显示问题
- 点击链接时直接在网页中打开word文档
- Frontiers in Pharmacology2020 | MOSES+:分子生成模型的benchmark平台
- 如何用计算机打出平方,平方符号在电脑怎么打出来(电脑输入平方符号的2种方法)...
- 商业综合体能耗在线监测管理系统_商场管理平台
- 打包带走极客时间大数据课程的正确姿势
- 【女黑客看《流浪地球2》是什么体验】