使用scikit-learn做基本机器学习

安装的工具包

sklearn: sudo pip install sklearn
numpy: sudo pip install numpy
scipy: sudo pip install scipy
matplotlib : sudo pip install matplotlib

sklearn的官网教程

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 features

常见的机器学习模型

KNN分类

#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 pred

SVM分类

# 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

关于sklearn读取libsvm文件

## 读取数据
from sklearn.datasets import load_svmlight_file
filename = "data/labelAttributes.txt"
data = load_svmlight_file(filename)
X, y = data[0], data[1]
# X为输入空间, y为输出空间

关于训练模型的保存与加载

需要导入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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值