数据前5行.png
LogisticRegression.fit
中是会自动dummy(哑编码、one-hot编码)。
预测准确率为96%。from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
print("鸢尾花数据集格式{},标签格式{}".format(iris.data.shape,iris.target.shape))
print("前5行鸢尾花数据:\n{}".format(iris.data[0:5]))
print("鸢尾花种类:{}".format(np.unique(iris.target)))
lr = LogisticRegression()
lr.fit(iris.data,iris.target)
print(lr.score(iris.data,iris.target))
输出结果:
鸢尾花数据集格式(150, 4),标签格式(150,)
前5行鸢尾花数据
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
[4.6 3.1 1.5 0.2]
[5. 3.6 1.4 0.2]]
鸢尾花种类:[0 1 2]
0.96
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(iris.data,iris.target)
print(lr.score(iris.data,iris.target))
结果,比逻辑回归略差。
0.9304223675331597
将鸢尾花的4维标签,压缩成3维。采用PCA方式降维。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import datasets
from sklearn.decomposition import PCA
# # import some data to play with
iris = datasets.load_iris()
y = iris.target
# To getter a better understanding of interaction of the dimensions
# plot the first three PCA dimensions
fig = plt.figure(1, figsize=(8, 6))
ax = Axes3D(fig)
X_reduced = PCA(n_components=3).fit_transform(iris.data)
ax.scatter(X_reduced[:, 0], X_reduced[:, 1], X_reduced[:, 2], c=y)
ax.set_title("First three PCA directions")
ax.set_xlabel("1st eigenvector")
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel("2nd eigenvector")
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel("3rd eigenvector")
ax.w_zaxis.set_ticklabels([])
plt.show()
PCA
通过观察降维之后的结果,鸢尾花数据在空间上可分,可用KNN算范对鸢尾花进行预测。
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(iris.data, iris.target)
print("KNN 算法准确度{}".format(knn.score(iris.data,iris.target)))
0.966
特征扩展有多种方式,其中二项式扩展方式为
等方式。