應用邏輯回歸方法對鳶尾花進行分類

2021-10-11 04:05:16 字數 4068 閱讀 8063

名稱

版本簡介

numpy

1.16.21.16.2

線性代數

opencv−python

4.1.1.264.1.1.26

計算機視覺

scikit−learn

0.20.30.20.3

機器學習

matplotlib

3.0.33.0.3

資料視覺化

iris資料集是常用的分類實驗資料集,由fisher, 1936收集整理

iris也稱鳶尾花卉資料集,是一類多重變數分析的資料集

資料集包含150個資料樣本,分為3類,每類50個資料,每個資料報含4個屬性

可通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性**鳶尾花卉屬於(setosa,versicolour,virginica)三個種類中的哪一類

機器學習解決的問題,大體上就是兩種:數值**和分類

前者一般採用的是回歸模型,比如最常用的線性回歸

後者的方法則五花八門,決策樹,knn,支援向量機,樸素貝葉斯等等模型都是用來解決分類問題的

其實,兩種問題從本質上講是一樣的:都是通過對已有資料的學習,構建模型,然後對未知的資料進行**,若是連續的數值**就是回歸問題,若是離散的類標號**,就是分類問題

這裡面有一模擬較特殊的演算法,就是邏輯回歸(logistic regression)

它叫「回歸」,可見基本思路還是回歸的那一套,同時,邏輯回歸又是標準的解決分類問題的模型

換句話說,邏輯回歸是用與回歸類似的思路解決了分類問題

首先導入庫

**示例:

pip install numpy

pip install opencv-python==

4.1.1

.26pip install scikit-learn

pip install matplotlib

import numpy as np

import cv2

from sklearn import datasets

from sklearn import model_selection

from sklearn import metrics

import matplotlib.pyplot as plt

%matplotlib inline

**示例:

plt.style.use(

'ggplot'

)

載入資料集

**示例:

iris = datasets.load_iris(

)

**示例:

dir

(iris)

我們有150個資料,每個資料四個特徵

**示例:

iris.data.shape
這四個特徵對應於之前提到的萼片和花瓣的尺寸:

**示例:

iris.feature_names
每個資料對應乙個標籤

**示例:

iris.target.shape
我們可以檢視分類標籤,一共有三個

**示例:

np.unique(iris.target)
我們先區分,是否是2類的花

**示例:

idx = iris.target !=

2data = iris.data[idx]

.astype(np.float32)

target = iris.target[idx]

.astype(np.float32)

在開始建立模型之前,最好先檢視一下資料

**示例:

plt.figure(figsize=(10

,6))

plt.scatter(data[:,

0], data[:,

1], c=target, cmap=plt.cm.paired, s=

100)

plt.xlabel(iris.feature_names[0]

)plt.ylabel(iris.feature_names[1]

);

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-tf8vrsgd-1606965641017)(c:\users\姚亮文\desktop\a.png)]

**示例:

x_train, x_test, y_train, y_test = model_selection.train_test_split(

data, target, test_size=

0.1, random_state=

42)

**示例:

x_train.shape, y_train.shape
**示例:

x_test.shape, y_test.shape
建立乙個邏輯回歸分類器的步驟和設定?k-nn差不多:

**示例:

lr = cv2.ml.logisticregression_create(

)

我們可以選擇

cv2.ml.logisticregression_batch

cv2.ml.logisticregression_mini_batch

這個我們以後再解釋

現在我們只需要知道,我們想在每個資料點計算後都更新一次

**示例:

lr.settrainmethod(cv2.ml.logisticregression_mini_batch)

lr.setminibatchsize(

1)

我們還希望指定迭代次數

**示例:

lr.setiterations(

100)

然後我們可以呼叫物件的』 train '方法(與前面的方法完全相同)

成功後會返回「true」

**示例:

lr.train(x_train, cv2.ml.row_sample, y_train)

;

檢視學習後的權重

**示例:

lr.get_learnt_thetas(

)

訓練集上的**

**示例:

ret, y_pred = lr.predict(x_train)
計算訓練集上的精度

**示例:

metrics.accuracy_score(y_train, y_pred)
完美!

然而,這僅僅意味著該模型能夠完美地記憶訓練資料集

這並不意味著該模型能夠對沒有見過的新的資料集進行分類

為此,我們需要在測試集上進行**

**示例:

ret, y_pred = lr.predict(x_test)

metrics.accuracy_score(y_test, y_pred)

算訓練集上的精度

**示例:

```python

metrics.accuracy_score(y_train, y_pred)

完美!

然而,這僅僅意味著該模型能夠完美地記憶訓練資料集

這並不意味著該模型能夠對沒有見過的新的資料集進行分類

為此,我們需要在測試集上進行**

**示例:

ret, y_pred = lr.predict(x_test)

metrics.accuracy_score(y_test, y_pred)

邏輯回歸 鳶尾花資料集

import numpy as np import pandas as pd data pd.read csv iris.csv 去掉不需要的列 data.drop id axis 1,inplace true data.drop duplicates inplace true 實現對映操作 dat...

邏輯回歸 鳶尾花資料調包

from sklearn.model selection import train test split from sklearn.linear model import logisticregression from sklearn import datasets 匯入資料 iris datase...

利用KNN對鳶尾花資料進行分類

knn k nearest neighbor 工作原理 存在乙個樣本資料集合,也稱為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類對應的關係。輸入沒有標籤的資料後,將新資料中的每個特徵與樣本集中資料對應的特徵進行比較,提取出樣本集中特徵最相似資料 最近鄰 的分類標籤...