第乙個機器學習專案(鳶尾花分類問題)

2021-08-21 11:18:32 字數 3180 閱讀 6832

鳶尾花分類

2、 匯入資料,通過描述性分析、視覺化等資料進行分析

3、 建立六個模型,並從中選擇準確度最高的模型

鳶尾花資料集特點:

1、所有的特徵資料都是數字

2、這是乙個分類問題,可以方便地通過有監督學習演算法來解決問題

3、所有的特徵採用相同的單位,不需要進行尺度的轉換

按照下面的步驟實現這個專案:

(1) 匯入資料

(2) 概述資料

(3) 資料視覺化

(4) 評估演算法

(5) 實施**

#匯入類庫

from pandas import read_csv

from pandas.plotting import scatter_matrix

from matplotlib import pyplot

from sklearn.model_selection import train_test_split

from sklearn.model_selection import kfold

from sklearn.model_selection import cross_val_score

from sklearn.metrics import classification_report

from sklearn.metrics import confusion_matrix

from sklearn.metrics import accuracy_score

from sklearn.linear_model import logisticregression

from sklearn.tree import decisiontreeclassifier

from sklearn.discriminant_analysis import lineardiscriminantanalysis

from sklearn.neighbors import kneighborsclassifier

from sklearn.*****_bayes import gaussiannb

from sklearn.svm import svc

#匯入資料

filename = 'iris.data.csv'

names = ['sepal length','sepal width','petal length','petal width','class']

dataset = read_csv(filename,names=names)

print(dataset.dtypes)

#顯示資料維度

print('資料維度:行%s,列%s' %(dataset.shape))

#檢視資料自身

print(dataset.head(10))

#統計描述資料資訊

print(dataset.describe())

#分類分布情況

print(dataset.groupby('class').size())

#箱線圖

dataset.plot(kind='box',subplots=true,layout=(2,2),sharex=false,sharey=false)

pyplot.show()

#直方圖

dataset.hist()

pyplot.show()

#散點矩陣圖

scatter_matrix(dataset)

pyplot.show()

#分離資料集

#按照80%的訓練資料集,20%的評估資料集

array = dataset.values

x = array[:,0:4]

y = array[:,4]

validation_size = 0.2

seed = 7

x_train,x_validation,y_train,y_validation = train_test_split(x,y,test_size = validation_size,random_state = seed)

#評估模式

#10折交叉驗證來分離訓練資料集,並評估演算法模型的準確度

#9份用來訓練模型,1份用來評估演算法

#演算法審查

models = {}

models['lr'] = logisticregression()

models['lda'] = lineardiscriminantanalysis()

models['knn'] = kneighborsclassifier()

models['cart'] = decisiontreeclassifier()

models['nb'] = gaussiannb()

models['svm'] = svc()

#評估演算法

results =

for key in models:

kfold = kfold(n_splits=10,random_state=seed)

cv_results = cross_val_score(models[key],x_train,y_train,cv=kfold,scoring='accuracy')

print('%s:%f(%f)' %(key,cv_results.mean(),cv_results.std()))

#svm演算法具有最高的準確度得分

fig = pyplot.figure()

fig.suptitle('algorithm comparison')

ax = fig.add_subplot(111)

pyplot.boxplot(results)

ax.set_xticklabels(models.keys())

pyplot.show()

#使用評估資料集評估演算法

svm = svc()

svm.fit(x_train,y_train)

predictions = svm.predict(x_validation)

print(accuracy_score(y_validation,predictions))

print(confusion_matrix(y_validation,predictions))

print(classification_report(y_validation,predictions))

Python 機器學習 鳶尾花分類

python 機器學習 鳶尾花分類 匯入類庫 from pandas import read csv from pandas.plotting import scatter matrix from matplotlib import pyplot from sklearn.model selecti...

鳶尾花分類 機器學習 鳶尾花資料集 貝葉斯分類

step1 庫函式匯入 import warnings warnings.filterwarnings ignore import numpy as np 載入鶯尾花資料集 from sklearn import datasets 匯入高斯樸素貝葉斯分類器 from sklearn.bayes im...

鳶尾花分類 機器學習 分門別類 分類器

分類器就是乙個由特徵向量到 類別的函式。在鳶尾花的分類問題中,我們用 1和 1兩個值分別代表變色鳶尾和山鳶尾兩個類別,並用字母y表示,即y可以取 1和 1兩個值。前面我們已經提取了鳶尾花的特徵,將它表示為特徵向量,並把特徵向量畫在了特徵空間。從下圖 一 看,對鳶尾花品種分類的問題就轉變成在特徵空間中...