利用鳶尾花資料,解釋並不是特徵越多越好

2021-08-20 04:03:57 字數 1656 閱讀 3415

#首先匯入我們需要的包
from sklearn import datasets

import numpy as np

from sklearn.cross_validation import train_test_split

from sklearn.preprocessing import standardscaler

from sklearn.linear_model import perceptron

from sklearn.metrics import accuracy_score

#然後選用鳶尾花的第2,3列特徵(畫圖可以發現這倆個特徵可以很好的區分開來)

iris = datasets.load_iris()

x = iris.data[:,[2,3]]

y = iris.target

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=0) #對訓練資料進行劃分

sc = standardscaler()#以下幾步為對資料進行標準化處理,防止由於某個特徵過大,導致其他特徵作用不明顯

sc.fit(x_train)

x_train_std = sc.transform(x_train)

x_test_std = sc.transform(x_test)

ppn = perceptron(n_iter=40,eta0=0.1,random_state=0)#訓練感知機分類器

ppn.fit(x_train_std,y_train)

y_pred = ppn.predict(x_test_std)

print('**錯誤的樣本數:%d'%((y_test)!=(y_pred)).sum())

print('本測試的準確率為%.2f'%(accuracy_score(y_test,y_pred)))#注意,如果寫%d由於取得是整數,所以最後的結果可能為0(%.2f)以為取倆位小數

#嘗試把四個特徵都跑一下,看下最終的效果

x_all =iris.data

y_all = iris.target

x_all_tarin,x_all_test,y_all_train,y_all_test = train_test_split(x_all,y_all,test_size=0.1,random_state=1)

sc1 = standardscaler()

sc1.fit(x_all_tarin)

x_all_tarin_std = sc1.transform(x_all_tarin)

x_all_test_std = sc1.transform(x_all_test)

ppn_all = perceptron(n_iter=50,eta0=0.1,random_state=0)

ppn_all.fit(x_all_tarin_std,y_all_train)

y_all_pred = ppn_all.predict(x_all_test_std)

print('使用全部資料得到的分類準確度%.2f'%(accuracy_score(y_all_test,y_all_pred)))

#經過比較我們發現,並不是特徵越多越好,但是如何選取特徵,有興趣的小夥伴可以學習下特徵工程

鳶尾花資料集

from sklearn import datasets iris datasets.load iris iris是乙個字典集keys iris.keys dict keys data target target names descr feature names data iris.data.sh...

鳶尾花分類python演算法 BP演算法鳶尾花分類

bp演算法鳶尾花分類 網上很多鳶尾花例子,學習其他人後仿寫,我在執行其他人的時候會有溢位和錯誤。下述 準確率95 提取碼 y07d 如果有什麼不對的或者有什麼不懂iamzhubaoliang yeah.net 工程位址 import math import random import pandas ...

鳶尾花資料分類實戰

資料集大概是這樣子的 將資料預處理一下 def get data loc iris.csv with open loc,r as fr lines csv.reader fr data file np.array list lines data data file 1 0 1 astype floa...