from sklearn import datasets
ir = datasets.load_iris()
X = ir.data # ค่าตัวเลขแสดงความกว้างความยาวของกลีบเลี้ยงและกลีบดอก
z = ir.target # เลข 0,1,2 ที่บอกว่าเป็นดอกไม้สายพันธุ์ไหน
print(ir.target_names) # ชื่อสายพันธ์ทั้ง ๓ ของดอกไม้
print(ir.feature_names) # ชื่อค่าแทนลักษณะทั้ง ๔ ที่พิจารณา
print(X.mean(0))
['setosa' 'versicolor' 'virginica']
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
[5.84333333 3.054 3.75866667 1.19866667]
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=[6,7])
for i in range(1,4):
for j in range(i):
plt.subplot2grid((3,3),(j,i-1),title='%s<>%s'%(i,j))
plt.scatter(X[:,i],X[:,j],20,c=z,alpha=0.9,edgecolor='C2',cmap='spring')
plt.tight_layout()
plt.show()
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=2)
Xi = lda.fit_transform(X,z)
plt.figure()
plt.scatter(Xi[:,0],Xi[:,1],c=z,alpha=0.9,edgecolor='C2',cmap='spring')
plt.show()
from sklearn.linear_model import LogisticRegression as Lori
from sklearn.neighbors import KNeighborsClassifier as Knn
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier as Rafo
x,y = Xi.T
model = [Lori(),Knn(),SVC(),Rafo()]
withi = [u'การถดถอยโลจิสติก',u'เพื่อนบ้านใกล้สุด k ตัว',u'SVM',u'ป่าสุ่ม']
mx,my = np.meshgrid(np.linspace(x.min(),x.max(),200),np.linspace(y.min(),y.max(),200))
mX = np.array([mx.ravel(),my.ravel()]).T
plt.figure(figsize=[7,7])
for i,m in enumerate(model):
m.fit(Xi,z)
mz = m.predict(mX).reshape(200,200)
plt.subplot(221+i,xlim=[x.min(),x.max()],ylim=[y.min(),y.max()])
plt.scatter(x,y,c=z,edgecolor='C2',cmap='spring')
plt.contourf(mx,my,mz,alpha=0.1,cmap='spring')
plt.title(withi[i],family='Tahoma')
plt.tight_layout()
plt.show()
from sklearn.model_selection import StratifiedKFold
ir = datasets.load_iris()
X,z = ir.data,ir.target
model = [Lori,Knn,SVC,Rafo]
khanaen = [[],[],[],[]]
for f,t in StratifiedKFold(n_splits=6).split(X,z):
for i,m in enumerate(model):
khanaen[i].append(m().fit(X[f],z[f]).score(X[t],z[t])*100)
khanaen_chalia = np.mean(khanaen,1)
for i in range(4):
print('%s: %.1f%%'%(withi[i],khanaen_chalia[i]))
การถดถอยโลจิสติก: 95.2%
เพื่อนบ้านใกล้สุด k ตัว: 96.6%
SVM: 98.0%
ป่าสุ่ม: 95.9%
from sklearn import datasets
ir = datasets.load_iris()
X,z = ir.data,ir.target
Xsom = SOM([100,100],eta=0.1).rianru_plaeng(X,100) # ใช้ SOM
plt.axes(aspect=1)
plt.scatter(Xsom[:,0],Xsom[:,1],c=z,alpha=0.9,edgecolor='C2',cmap='spring')
plt.show()
ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ