1.什么是机器学习?
机器学习有下面几种定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。” “机器学习是对能通过经验自动改进的计算机算法的研究。” “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”
一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
2.什么是Scikit-Learn?
Scikit-learn的简称是SKlearn,是用Python开发的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便的工具。Scikit-learn的文档下载地址:http://scikit-learn.org/stable/#
2.1 安装
使用anaconda安装scikit-learn:pip install scikit-learn
2.2 算法的选择
SKlearn给出了如何选择正确的方法:
官网清晰大图:http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
3. 一个简答分类模型(Classification)
SKlearn中学习模式的调用,有很强的统一性,很多都是类似的,学会一个,其他基本差不多。当然其中也包括对数据的标标准化等预处理,以及模型参数的设计与调整等其他更深层次的操作则需要根据具体问题具体分析。
3.1 鸢尾花数据集
针对上述已经导入的鸢尾花数据集,继续对其进行分析。代码如下:
# 鸢尾花数据集操作
# 导入模块
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 加载数据
iris = datasets.load_iris()
iris_X = iris.data #s所有的属性存在data中
iris_y = iris.target #有三个类别,存在target中
# 分割数据集
X_train,X_test,y_train,y_tets = train_test_split(iris_X,iris_y,test_size =0.3)
# 进行训练
knn = KNeighborsClassifier()
knn.fit(X_train,y_train)
# 测试集
knn.predict(X_test)
3.2 scikit-learn中的其他数据集
数据集网址: http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets
它包括实际数据集(Loader)和自我生成数据集(Samples generator):
自我生成一个数据集:
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
X,y = datasets.make_regression(n_samples =100,n_features=1,n_targets=1,noise=10)
plt.scatter(X,y)
4.model的常用属性
from sklearn import datasets
from sklearn.linear_model import LinearRegression
loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_y = loaded_data.target
model = LinearRegression()
model.fit(data_X,data_y)
model.predict(data_X[:4,:]) #预测
model.get_params() #获取设定的参数
model.coef_ #回归方程的系数
model.intercept_ #回归方程的截距
model.score(data_X,data_y) #准确度,根据R^2计算