在幾經摸索下,終於用python開始寫下了自己的第乙個機器學習演算法knn
這是乙個分類演算法,可以通過已有標籤,判斷乙個輸入的事物是不是已知的標籤,其實這個演算法算是入門級的,用來練手剛剛好
寫完以後覺得,機器學習比較麻煩的是處理資料,輸入資料,困難的是對於資料的建模,**其實寫不來多少
話不多說附上我的核心原始碼
test.py
defclassify0(inx,dataset,lables,k):datasetsize = dataset.shape[0]
diffmat = tile(inx,(datasetsize,1)) - dataset
sqdiffmat = diffmat **2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances ** 0.5
sorteddisindicies = distances.argsort()
classcount = {}
foriinrange(k):
voteilabel = lables[sorteddisindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0)+1
sortedclasscount = sorted(classcount.iteritems(),key = operator.itemgetter(1),reverse=true)
returnsortedclasscount[0][0]
這是knn核心分類**,所有一切的基礎都是在此基礎上得到的
還有乙個我抄寫大神寫的 利用機器學習識別0-9識別的原始碼
fromnumpyimport*fromosimportlistdir
importtest
defhand_writing_class_test():hwlabels =
training_file_list = listdir('digits/trainingdigits')
m = len(training_file_list)
training_mat = zeros((m,1024))
foriinrange(m):
file_name_str = training_file_list[i]
file_str = file_name_str.split('.')[0]
class_num_str = int(file_str.split('_')[0])
training_mat[i,:] = img_vector('digits/trainingdigits/%s'%file_name_str)
test_file_list = listdir('digits/testdigits')
error_count = 0.0
m_test = len(test_file_list)
foriinrange(m_test):
file_name_str = test_file_list[i]
file_str = file_name_str.split('.')[0]
class_num_str = int(file_str.split('_')[0])
vector_under_test = img_vector('digits/testdigits/%s'%file_name_str)
class_ifier_results = test.classify0(vector_under_test,training_mat,hwlabels,3)
print("the class_ifier_results came back with:%d,the real answer is %d"%(class_ifier_results,class_num_str))
if(class_ifier_results!=class_num_str):error_count +=1.0
print"\nthe total number of errors is %d"%error_count
print"\nthe total error rate is %f"%(error_count/float(m_test))
暫時先寫著麼多,我以後一點一點的學習,一點一點的寫
機器學習第乙個演算法
單變數線性回歸 導包import numpy as np import matplotlib.pyplot as plt plt.rcparams font.sans serif simhei 正常顯示中文 plt.rcparams axes.unicode minus false 正常顯示符號 讀...
記學習機器學習的第乙個演算法
就拿最經典的房屋 來說吧,我們假設想用房屋面積去 房屋 我們需要去假設自變數房屋面積和因變數房屋面積是線性相關關係的,而線性回歸正適合解決連續性變數 問題,所以這裡我們可以用單變數線性回歸去 它。如圖,我們的資料集變化趨勢擬合一條直線,而我們的目的就是盡可能去找到一條直線擬合最多的點 對於多元線性回...
Python第乙個爬蟲學習
在網上檢視大神的關於python爬蟲的文章,如下 以下則是在執行上述 過程中遇到的相關問題,以及解決方式,雖然不怎麼高階,但是也算是一種學習思路吧。問題1 在python3.2的環境下,未執行時,會報錯 解決1 將 print getimg html 修改為 print getimg html 問題...