Scikit-Learn 轻松使用机器学习
莫烦python Scikit-Learn 轻松使用机器学习 官网地址
>>选择学习方法
-
Sklearn 官网提供了一个 流程图, 蓝色圆圈内是判断条件,绿色方框内是可以选择的算法:
-
从 START 开始,首先看数据的样本是否 >50,小于则需要收集更多的数据。
-
由图中,可以看到算法有四类,分类,回归,聚类,降维。
-
其中 分类和回归是监督式学习,即每个数据对应一个 label。 聚类 是非监督式学习,即没有 label。 另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。例如 20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。
>>通用机器学习
from sklearn import datasets #数据集
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
# 1. 加载数据
iris= datasets.load_iris()
# iris_X, iris_y= iris.data, iris.target
iris_X, iris_y= pd.DataFrame(iris.data), pd.DataFrame(iris.target)
# 2. 将数据切分为 训练数据 验证数据
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.3)
# 3. 定义模型
knn= KNeighborsClassifier() # knn 模型
# 4. fit 训练
knn.fit(X_train, y_train) # 训练
# 5. 模型预测
pre_x=pd.DataFrame(knn.predict(X_test)) # 预测
pre_x.index = y_test.index
y_test["pre"] = pre_x[0]
y_test.T
116 | 0 | 9 | 15 | 43 | 70 | 124 | 137 | 90 | 91 | ... | 129 | 19 | 105 | 40 | 33 | 144 | 35 | 10 | 98 | 126 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 0 | 0 | 0 | 0 | 1 | 2 | 2 | 1 | 1 | ... | 2 | 0 | 2 | 0 | 0 | 2 | 0 | 0 | 1 | 2 |
pre | 2 | 0 | 0 | 0 | 0 | 1 | 2 | 2 | 1 | 1 | ... | 2 | 0 | 2 | 0 | 0 | 2 | 0 | 0 | 1 | 2 |
>>sklearn 强大数据库
- 可以生成虚拟的数据,例如用来训练线性回归模型的数据,可以用函数来生成。
- 按照函数的形式,输入 sample,feature,target 的个数等等
sklearn.datasets.make_regression(n_samples=100, n_features=100, n_informative=10, n_targets=1, bias=0.0, effective_rank=None, tail_strength=0.5, noise=0.0, shuffle=True, coef=False,
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 导入数据
loaded_data = datasets.load_boston()
data_X, data_y = loaded_data.data, loaded_data.target
# 定义模型
model = LinearRegression()
# 训练模型
model.fit(data_X, data_y)
# 预测
print(model.predict(data_X[:4,:]))
print(data_y[:4])
# 创建虚拟数据
X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)
X_50, y_50 = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=50)
plt.scatter(X, y) # noise 10
plt.scatter(X_50, y_50) # noise 50
plt.show()
>>sklearn 常用属性与功能
model.fit() , model.predict()
# 首先导入包,数据, 还有模型
from sklearn import datasets
from sklearn.linear_model import LinearRegression
loaded_data = datasets