sklearn: sudo pip install sklearn numpy: sudo pip install numpy scipy: sudo pip install scipy matplotlib : sudo pip install matplotlib
http://scikit-learn.org/stable
机器学习有三个基本的要素,分别是:输入空间, 特征空间与输出空间. 输入空间与输出空间分别表示的是输入与输出的所有可能取值的集合. 由输入空间到输出空间的映射过程, 就是机器学习的任务.然而, 输入空间往往存在数据的冗余, 稀疏, 不平衡分布等情况, 若直接将输入空间作为机器学习模型的输入, 很容易造成学习过程出现较大的偏差. 因此, 需要对输入空间做进一步的数据预处理, 从而构建特征空间.
数据预处理中, 一种比较典型的方法为数据中心化(standardization) . 数据中心化的目的是将数据中每一个特征都服从正态分布, 这样即可以保持特征内数据之间的差异在[-1,1] , 也可以减低特征之间的分布差异. 数据中心化的具体思路是将每一项特征内的数据分布看成独立的标准正态分布, 通过求解均值与分差, 将每一项数据映射为[-1,1]的正态数据. 具体的代码如下:
# coding=utf-8 from sklearn import preprocessing import numpy as np # 原始输入空间 X = np.array([[1.,-1.,2.], [2.,0.,0.], [0.,1.,-1.]]) # 数据中心化 scaler = preprocessing.StandardScaler().fit(X) # 构建特征空间 features = scaler.transform(X) print featuresKNN分类
#coding=utf-8 from sklearn import neighbors from sklearn.datasets import load_iris n_neighbors = 5 # 最近邻的个数 # 读取数据集 iris = load_iris() features = iris.data[:, :2] # 特征矩阵 target = iris.target # 目标属性 # 构建分类器 clf = neighbors.KNeighborsClassifier(n_neighbors=n_neighbors) clf.fit(features, target) # 预测分类结果 pred = clf.predict(features) print predSVM分类
# coding=utf-8 from sklearn import svm # 训练样本的特征空间 X = [[0,1],[0,2],[0,3],[1,0],[2,0],[3,0]] # 训练样本的目标属性 y = [0,0,0,1,1,1] # 构建SVM分类器, 将probability设为true,可以计算每个样本到各个类别的概率 clf = svm.SVC(probability=True) # SVM分类器训练样本 clf.fit(X,y) # 测试样本 test = [[2.5,2.5],[2.5,0]] # 用分类器预测测试样本, 计算每个样本到各个类别的概率 result = clf.predict_proba(test) print result需要导入joblib
# coding=utf-8 from sklearn.neural_network import MLPClassifier from sklearn.externals import joblib import os # 模型保存的文件夹路径 os.chdir("/home/quincy/model_save") # 训练模型 X = [[0., 0.], [1., 1.],[2.,2.]] y = [0,1,2] clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5,3), random_state=1) clf.fit(X,y) # 将训练好的模型保存到train_model.m中 joblib.dump(clf, "train_model.m") # 模型的加载 clf = joblib.load("train_model.m") test = [[2., 2.],[1., 2.]] result = clf.predict_proba(test) print result