簡單歐氏距離分類器

2021-09-26 14:38:04 字數 2139 閱讀 2727

機器學習問題描述

機器學習分類

任務根據麻瓜程式設計及習題整理

禁轉人工智慧

機器學習

實現人工智慧的一種方法

深度學習

機器學習中的一類演算法

特點:大資料,效果好,影象識別,語音識別

概括:通過學習歷史資料的特徵構建模型**未來資料

根據訓練樣本是否包含標籤分類:

監督學習

訓練樣本包含對應的「標籤」

無監督學習

訓練樣本的屬性不包括對應的「標籤」,如根據上網行為對客戶分群從而進行精確營銷等

無監督學習通常是通過聚類來將相似的樣本聚在一起,然後分析這種聚類的原因

監督學習

學習歷史資料,根據特徵**水果類別

資料集描述

每列乙個特徵,每一行乙個樣本,最後一列類別

思路語言:python

安裝機器學習工具庫:pip install scikit-learn

劃分資料集:train_test_split()

需要劃分訓練集和測試集

使用演算法「近朱者赤」:euclidean(歐氏距離)

計算空間中兩個點的距離

**實現

import pandas as pd

from sklearn.model_selection import train_test_split

from scipy.spatial.distance import euclidean

import numpy as np

import ai_utils

data_file = './data_ai_practice/fruit_data.csv'

feat_cols = ['mass','width','height','color_score']

def get_pred_label(test_sample_feat,train_data):

"""「近朱者赤」 找最近距離的訓練樣本,取其標籤作為**樣本的標籤

"""dis_lis =

for idx,row in train_data.iterrows():

#訓練樣本特徵

train_sample_feat = row[feat_cols].values

#計算距離

dis = euclidean(test_sample_feat,train_sample_feat)

#最小距離對應的位置

pos = np.argmin(dis_lis)

pred_label = train_data.iloc[pos]['fruit_name']

return pred_label

def main():

"""主函式

"""#讀取資料集

fruit_data = pd.read_csv(data_file)

#劃分資料集

train_data,test_data=train_test_split(fruit_data,test_size=1/5,random_state=10)

#**對的個數

acc_count = 0

#分類器

for idx,row in test_data.iterrows():

#測試樣本特徵

test_sample_feat = row[feat_cols].values

#**值

pred_label = get_pred_label(test_sample_feat,train_data)

#真實值

true_label = row['fruit_name']

print('樣本{}的真實標籤{},**標籤{}'.format(idx,true_label,pred_label))

if true_label == pred_label:

acc_count += 1

#準確率

accuracy = acc_count/test_data.shape[0]

print('**準確率%'.format(accuracy*100))

if __name__ == '__main__':

main()

歐氏距離分類器

歐氏距離分類器是貝葉斯分類器的退化版本,在樣本滿足一定條件下成立。如下 function cls mahalanobisclassifier varargin x,m,sigma parseinputs varargin 分析輸入的變數 dis zeros size m,1 1 歐氏距離 cls z...

歐氏距離的矩陣實現 k近鄰分類器

在這個程式裡有130個訓練樣本也就是矩陣x,每個樣本實際上就是乙個點,它的第一行和第二行分別是它的橫縱座標 有2500個測試樣本也就是矩陣y,每個樣本實際上也是乙個點,第一行和第二行分別是它的橫縱座標。距離函式的主體 如下 xx sum x.2,1 1 130 yy sum y.2,1 d repm...

歐氏距離(Euclidean distance)

歐氏距離定義 歐氏距離 euclidean distance 是乙個通常採用的距離定義,它是在m維空間中兩個點之間的真實距離。在二維和三維空間中的歐式距離的就是兩點之間的距離,二維的公式是 d sqrt x1 x2 y1 y2 三維的公式是 d sqrt x1 x2 y1 y2 z1 z2 推廣到n...