《Python数据科学指南》——2.4　使用scikit-learn进行机器学习

2.4　使用scikit-learn进行机器学习

scikit-learn是Python中的一个全能的机器学习库，我们在本书中会大量使用它。我们使用的版本为0.15.2。你可以在命令行里调用_version_属性来检查版本，如图2-17所示。

2.4.2　操作方法

scikit-learn提供了一个内置数据集，我们看看如何访问和使用它。

#Recipe_3a.py
make_circles, make_moons

# Iris数据集
x = data['data']
y = data['target']
y_labels = data['target_names']
x_labels = data['feature_names']

print
print x.shape
print y.shape
print x_labels
print y_labels

# Boston数据集
x = data['data']
y = data['target']
x_labels = data['feature_names']
print
print x.shape
print y.shape
print x_labels

# 制作一些分类数据集
x,y = make_classification(n_samples=50,n_features=5, n_classes=2)

print
print x.shape
print y.shape

print x[1,:]
print y[1]

# 一些非线性数据集
x,y = make_circles()
import numpy as np
import matplotlib.pyplot as plt
plt.close('all')
plt.figure(1)
plt.scatter(x[:,0],x[:,1],c=y)

x,y = make_moons()
import numpy as np
import matplotlib.pyplot as plt
plt.figure(2)
plt.scatter(x[:,0],x[:,1],c=y)

plt.show()

#Recipe_3b.py
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
# 数据预处理
x = np.asmatrix([[1,2],[2,4]])
poly = PolynomialFeatures(degree = 2)
poly.fit(x)
x_poly = poly.transform(x)

print "Original x variable shape",x.shape
print x
print
print "Transformed x variables",x_poly.shape
print x_poly

# 另一种写法
x_poly = poly.fit_transform(x)

from sklearn.tree import DecisionTreeClassifier

x = data['data']
y = data['target']

estimator = DecisionTreeClassifier()
estimator.fit(x,y)
predicted_y = estimator.predict(x)
predicted_y_prob = estimator.predict_proba(x)
predicted_y_lprob = estimator.predict_log_proba(x)

from sklearn.pipeline import Pipeline

poly = PolynomialFeatures(n=3)
tree_estimator = DecisionTreeClassifier()

steps = [('poly',poly),('tree',tree_estimator)]
estimator = Pipeline(steps=steps)
estimator.fit(x,y)
predicted_y = estimator.predict(x)

2.4.3　工作原理

from sklearn.datasets import load_iris,load_boston,make_classification

data = load_iris()
x = data['data']
y = data['target']
y_labels = data['target_names']
x_labels = data['feature_names']

print
print x.shape
print y.shape
print x_labels
print y_labels

# Boston数据集
x = data['data']
y = data['target']
x_labels = data['feature_names']

scikit-learn也给我们提供了一些函数来产生随机分类的数据集，并可以指定一些需要的属性。

# 产生一些分类数据集
x,y = make_classification(n_samples=50,n_features=5, n_classes=2)

make_classification函数用来产生分类数据集。本例中，我们指定n_samples参数生成50个实例，n_features参数生成5个属性，n_classes参数生成两个类集合。请看这个函数的输出，如图2-20所示。

print x.shape
print y.shape

print x[1,:]
print y[1]

scikit-learn也给我们提供了一些函数来产生非线性关系。

# 一些非线性数据集
x,y = make_circles()
import numpy as np
import matplotlib.pyplot as plt
plt.close('all')
plt.figure(1)
plt.scatter(x[:,0],x[:,1],c=y)

scikit-learn里还有一个有趣的函数make_moons也能产生非线性关系。

x,y = make_moons()
import numpy as np
import matplotlib.pyplot as plt
plt.figure(2)
plt.scatter(x[:,0],x[:,1],c=y)

import numpy as np
from sklearn.preprocessing import PolynomialFeatures

# 数据预处理
x = np.asmatrix([[1,2],[2,4]])

poly = PolynomialFeatures(degree = 2)

poly.fit(x)
x_poly = poly.transform(x)

transform函数接收输入数据，并基于fit函数的计算结果将输入数据进行转换。

# 换一种方式
x_poly = poly.fit_transform(x)

scikit-learn中所有实现机器学习方法的类都来自BaseEstimator，请参见：http://scikit-learn.org/stable/modules/ generated/sklearn.base.BaseEstimator.html。

BaseEstimator要求用以实现的类提供fit和transform两种方法，这样才能保持API简洁清晰。

from sklearn.tree import DecisionTreeClassifier

from sklearn.datasets import load_iris

x = data['data']
y = data['target']

estimator = DecisionTreeClassifier()
estimator.fit(x,y)
predicted_y = estimator.predict(x)
predicted_y_prob = estimator.predict_proba(x)
predicted_y_lprob = estimator.predict_log_proba(x)

from sklearn.pipeline import Pipeline

poly = PolynomialFeatures(3)
tree_estimator = DecisionTreeClassifier()

steps = [('poly',poly),('tree',tree_estimator)]

estimator = Pipeline(steps=steps)
estimator.fit(x,y)
predicted_y = estimator.predict(x)

2.4.4　更多内容

scikit-learn里还有更多的数据集生成函数，请参见：

2.4.5　参考资料

|
1天前
|

|
1天前
|

Python 与机器学习：构建高效数据处理流程

10 2
|
2天前
|

|
10天前
|
Python

106 46
|
14天前
|

GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法（js和python代码）
GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法（js和python代码）
11 0
|
14天前
|

GEE机器学习——最大熵分类器案例分析（JavaScript和python代码）
GEE机器学习——最大熵分类器案例分析（JavaScript和python代码）
15 0
|
14天前
|

30 0
|
17天前
|

11 0
|
17天前
|

Python与机器学习：开启智能应用的新纪元

16 2
|
17天前
|

18 2

• 云迁移中心

更多

更多

更多