对Python语言有所了解的科研人员可能都知道SciPy——一个开源的基于Python的科学计算工具包。
基于SciPy,目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本,它们被统一称为Scikits,即SciPy工具包的意思。
而在这些分支版本中,最有名,也是专门面向机器学习的一个就是Scikit-learn。
Scikit-learn项目最早由数据科学家 David Cournapeau 在 2007 年发起,需要NumPy和SciPy等其他包的支持,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。
和其他众多的开源项目一样,Scikit-learn目前主要由社区成员自发进行维护。可能是由于维护成本的限制,Scikit-learn相比其他项目要显得更为保守。
分类是指识别给定对象的所属类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等。
目前Scikit-learn已经实现的算法包括:
Scikit-learn针对每个算法和模块都提供了丰富的参考样例和详细的说明文档。
回归是指预测与给定对象相关联的连续值属性,最常见的应用场景包括预测药物反应和预测股票价格等。
目前Scikit-learn已经实现的算法包括:
可以看到,这里实现的回归算法几乎涵盖了所有开发者的需求范围,而且更重要的是,Scikit-learn还针对每种算法都提供了简单明了的用例参考。
聚类是指自动识别具有相似属性的给定对象,并将其分组为集合,属于无监督学习的范畴,最常见的应用场景包括顾客细分和试验结果分组。
目前Scikit-learn已经实现的算法包括:
数据降维是指使用主成分分析(PCA)、非负矩阵分解(NMF)或特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。
模型选择是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度。
目前Scikit-learn实现的模块包括:
数据预处理是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的一个环节。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics
iris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(
X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)
y_pred = knn.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn import metrics
iris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(
X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
gnb = GaussianNB()
gnb.fit(X_train,y_train)
y_pred = gnb.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn import metrics
iris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(
X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
svc = SVC(kernel='linear',C=0.1)
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
或者
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
函数 | 描述 | 问题类别 |
---|---|---|
load_boston() |
波士顿房价数据集 | 回归 |
load_breast_cancer() |
威斯康辛州乳腺癌数据集 | 分类 |
load_diabetes() |
糖尿病数据集 | 回归 |
load_digits() |
数字数据集 | 分类 |
load_iris() |
鸢尾花数据集 | 分类 |
load_linnerud() |
linnerud数据集 | 多变量回归 |
load_wine() |
红酒数据集 | 分类 |
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(
X,y,test_size=0.3,random_state=42)
test_size
:测试集大小train_size
:训练集大小random_state
:随机种子from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
特征工程是指从原始数据转换为特征向量的过程。
特征工程是机器学习中最重要的起始步骤,会直接影响机器学习的效果,并通常需要大量的时间。
典型的特征工程包括数据清理、特征提取、特征选择等过程。
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5)
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
from sklearn.svm import SVC
svc = SVC(kernel='linear',C=0.1)
knn.fit(X_train,y_train)
gnb.fit(X_train,y_train)
svc.fit(X_train,y_train)
y_pred = knn.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
y_pred = gnb.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
y_pred = svc.predict(X_test)
metrics.accuracy_score(y_test,y_pred)