oner演算法就是,在已有資料中,根據具有相同特徵值的個體最可能屬於哪個類別進行分類。即取效果最好的那個特徵進行分類。
#-*- coding=utf-8 -*-
#import numpy as np
from sklearn.datasets import load_iris
from collections import defaultdict
from operator import itemgetter
#該演算法目的是通過這四個特徵中的乙個以分辨種類,即,如果某一植物的特徵feature_index 的離散值為valu
#那麼該植物最有可能是most_frequent_class,錯誤率為error
#x為離散後的資料,y_true為每組資料的植株種類,feature_index為以第幾個特徵為標準,value為特徵值
def train_feature_value(x,y_true,feature_index,value):
class_counts = defaultdict(int)
for sample,y in zip(x,y_true):
if sample[feature_index] == value:
class_counts[y]+=1
sorted_class_counts = sorted(class_counts.items(),key=itemgetter(1),reverse=true)
print(sorted_class_counts)
most_frequent_class = sorted_class_counts[0][0]
print(most_frequent_class)
incorrect_predictions = [class_count for class_vlue,class_count in class_counts.items() if class_vlue != most_frequent_class]
print(incorrect_predictions)
error = sum(incorrect_predictions)
return most_frequent_class,error
if __name__ == '__main__':
#從scikit-learn庫中讀取內建的「iris植物分類資料集」
dataset = load_iris()
x = dataset.data#每株植物的四個特徵
y = dataset.target#每株植物的種類,有4個種類
#求4個特徵的平均值
attribute_means = x.mean(axis=0)
#當該值大於平局值時為1,小於平局值時為0,完成原始資料的離散化
x_d = np.array(x>=attribute_means,dtype='int')
train_feature_value(x_d,y,0,1)
#todo
predictors = {}
errors =
Python資料探勘入門與實踐 OneR分類演算法
oner演算法是根據已有的資料中,具有相同特徵值的個體最可能屬於哪個類別進行分類。在本例中,只需選區iris是個特徵中分類效果最好的乙個作為分類依據。資料集的特徵為連續值,把連續值轉變為類別行,這個過程叫作離散化。每條資料集中給出了四個特徵 sepal length,sepal width,peta...
python簡單演算法整理
氣泡排序 def func alist for x in range 1,len alist for i in range 0,len alist x if alist i alist i 1 alist i alist i 1 alist i 1 alist i return alist prin...
Python中簡單的遞迴演算法
可以遞迴的問題往往在大多數情況下都可以使用迴圈代替,並且迴圈的效率往往更高。但遞迴的 可讀性非常強,非常適合於效能要求不高的問題實現和後期 的維護。1 求階乘,階乘和冪級數是兩個最經典的遞迴函式。假設要計算數n的階乘,b的階乘的定義為n n 1 n 2 1,其中n必須為無符號整數 unsigned ...