AI-sklearn 学习笔记(一)

sklearn中算法有四类,分类,回归,聚类,降维

分类和回归是监督式学习,即每个数据对应一个 label。

聚类 是非监督式学习,即没有 label。

降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。例如 20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。

然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。 当然还要考虑数据的大小,例如 100K 是一个阈值。

可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
#下载iris数据集
iris = datasets.load_iris()
#将数据的data部分和target进行赋值, data包含iris花朵的长宽和茎的长宽 iris_X
= iris.data iris_Y = iris.target iris_X Out[9]: array([[5.1, 3.5, 1.4, 0.2], [4.9, 3. , 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], 。。。 。。。 [6.7, 3. , 5.2, 2.3], [6.3, 2.5, 5. , 1.9], [6.5, 3. , 5.2, 2. ], [6.2, 3.4, 5.4, 2.3], [5.9, 3. , 5.1, 1.8]])

#iris_Y是花的种类,共三种类型 iris_Y Out[
10]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

#将数据分为训练集合测试集, 用到sklearn API train_test_split, test_size=0.3代表测试集占总数据集的30%。
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_Y, test_size=0.3) y_train Out[13]: array([2, 0, 0, 0, 0, 2, 2, 0, 2, 0, 1, 2, 0, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 0, 0, 1, 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 2, 2, 2, 1, 2, 1, 2, 0, 0, 2, 2, 0, 2, 0, 2, 0, 1, 1, 1, 2, 0, 2, 1, 2, 1, 2, 2, 0, 1, 2, 0, 1, 2, 0, 0, 2, 0, 1, 1, 2, 2, 0, 0, 1, 2, 1, 1, 2, 0, 0, 0, 1]) X_train Out[14]: array([[6.7, 3.1, 5.6, 2.4], [5.4, 3.4, 1.7, 0.2], [5.1, 3.8, 1.9, 0.4], 。。。 。。。 [5.4, 3.9, 1.7, 0.4], [4.6, 3.4, 1.4, 0.3], [5.5, 3.5, 1.3, 0.2], [5.5, 2.6, 4.4, 1.2]])

#建立模型 knn
= KNeighborsClassifier()
#训练 knn.fit(X_train, y_train) Out[
16]: KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=5, p=2, weights='uniform')
#预测 knn.predict(X_test) Out[
17]: array([0, 0, 2, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 2, 2, 1, 1, 1, 2, 2, 0, 1, 0, 2, 1, 2, 1, 1])
#对比预测值和测试值 y_test Out[
18]: array([0, 0, 2, 1, 1, 2, 0, 0, 2, 1, 0, 2, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 1, 2, 0, 1, 0, 2, 2, 1, 1, 1, 2, 2, 0, 1, 0, 2, 1, 2, 1, 1])

猜你喜欢

转载自www.cnblogs.com/brownz/p/9556439.html
今日推荐