sklearn编程模型
来源:互联网 发布:手机画图软件排行 编辑:程序博客网 时间:2024/06/05 13:37
sklearn编程模型
数据集
sklearn.datasets自带一些经典数据集,方便用于实验。以iris数据集为例
.data是一个150x4的矩阵,每行是一个样本,每列是一个feature,feature的名字在.feature_names,.target是150x1的数组,对应每个样本的目标:
通常用法如下,用大写表示矩阵,小写表示数组。数据集可以按需求拆分成训练集和测试集使用。
X, y = iris.data, iris.targetestimater.fit(X, y)
estimator(估计器)
有了数据集之后就是训练与分类/回归的过程,新建一个estimator,先用estimator.fit(X, y)
训练,然后用estimator.predict(T)
测试,示例如下,如果这个estimator是一个分类器,给他的实例起名叫classifier会比较清晰:
>>> from sklearn import svm>>> classifier = svm.SVC(gamma=0.001, C=100.)>>> classifier.fit(iris.data[:-1], iris.target[:-1]) #保留最后一条样本,用于测试>>> classifier.predict(iris.data[-1:])
transformer(数据集转换)
transformer实现fit
transform
,还有一个方便的组合fit_transform
transformer涵盖很广,包括数据预处理、数据降维、特征提取等,它的接口和estimator很类似,transformer和estimator常被组织进Pipeline,按步骤操作。
Pipeline
前一个transformer.transform()输出给下一个,这样就串联起来了,最后一个步骤通常是个estimator。预处理、降维、训练,调用一次fit
就行了。
#PCA是个transformer,做降维,SVC是个estimator,训练>>> estimators = [('reduce_dim', PCA()), ('clf', SVC())]>>> pipe = Pipeline(estimators)>>> pipe.fit(X, y)
FeatureUnion
和Pipeline类似,但不是串联,是并联,把多个transformer处理过的数据合起来输出
>>> estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]>>> combined = FeatureUnion(estimators)>>> combined.fit(X, y).transform() #假设PCA提取2个特征,KernelPCA提取3个特征,变换样本数不变,输出5列#也可以并联之后再串联>>> pipeline = Pipeline([("features", combined), ("svm", svm)])
sklearn模块、类组织方法
estimator和Pipeline可以fit
predict
,transformer和FeatureUnion可以fit
transform
,接口很相似,便于相互配合工作。
python没有强制interface保证,比如estimator的fit
和predict
有些地方用abc metaclass来保证,但不是很统一,好像有个基类BaseEstimator,又用mixin、又用metaclass的,自己要实现一个estimator也不知道继承哪一个。
没找到sklearn的类继承图,它的各个estimator分布在不同模块里,那么要实现一个estimator,可能的方法
- 直接继承成熟的estimator,如LinearRegression,svm.SVC,然后修改fit和predict函数
- 不继承,完全实现,因为就算继承了,基类中也没什么可复用的代码
- sklearn编程模型
- sklearn模型持久化
- sklearn模型持久化
- sklearn中的模型评估
- sklearn之线性模型
- sklearn中的模型评估
- sklearn中的模型评估
- sklearn 存取模型
- sklearn:选择正确的模型
- sklearn GMM BIC 模型选择
- sklearn中高斯混合模型
- 【机器学习】Sklearn 调试模型
- 转:sklearn中的模型评估
- 转:sklearn中的模型评估
- sklearn特征选择和分类模型
- sklearn 模型持久化,save和load
- python中sklearn-learn模型持久化
- sklearn之模型选择与评估
- spin_lock & mutex_lock的区别? .
- 持续集成入门
- 禅道的最简使用
- NYOJ【463】九九乘法表【循环】
- 用CSS写一个简单的幻灯片效果页面
- sklearn编程模型
- 机器学习实战第二章kNN算法详解
- Linux电源管理(9)_wakelocks
- iOS-2017面试题大全
- Jdbc连接Hive数据库
- 关于celery worker的参数
- 禅道的基本使用
- [Python] 类方法、实例方法和静态方法的定义方式与区别
- Python网络爬虫与信息提取-Day6-Beautiful Soup库