前言
我是一個完全沒用過python的人,所以,想寫機器學習,就得從語法入手。
首先上W3cSchool去學習基礎語法。
基礎語法都差不多,重點看一下函式,模組,物件導向。
函式的寫法稍有不同,格式上類似yml的寫法;模組會介紹import的相關資訊;物件導向會介紹類的相關資訊。
參考網站:
https://www.w3cschool.cn/python3/
https://www.w3cschool.cn/python3/python3-eam72ylh.html
理論上,2~3個小時就能學完。
K-means機器學習
我這裡使用VSCode進行開發,隨便開啟一個資料夾,然後建立一個KmeansTest.py的檔案,然後點執行(右上角的三角),然後系統會提示安裝python。
因為我電腦是Window11,所以會彈窗提示我安裝python3的包,點選安裝即可;如果不是window11,就自己下個python包,配置一下環境變數,這個過程不復雜。
然後,因為我是完全沒有python經驗的,所以我也不知道要安裝什麼外掛,所以我就開啟擴充套件視窗,輸入python搜尋,隨便按幾個最上面的外掛。
然後,先在終端裡執行下面程式碼:
pip install scikit-learn
pip install matplotlib
scikit-learn是做機器學習的,matplotlib是一個繪圖的庫。
然後我們定義個陣列做為學習的源資料.
X1 = [
[0.0,0.0],
[0.0,0.3],
[0.3,0.0],
[9.0,0.0],
[9.0,0.6],
[9.6,0.0]]
然後編寫程式碼:
from sklearn.cluster import KMeans
# 按F2可以重新命名
xList = [
[0.0,0.0],
[0.0,0.3],
[0.3,0.0],
[9.0,0.0],
[9.0,0.6],
[9.6,0.0]]
n_clusters = 2
cluster = KMeans(n_clusters=n_clusters, random_state=0).fit(xList)
xLable = cluster.labels_
# xlable 是上面那個集合,每個元素的所屬分組
print ("xLable",xLable)
xListGroup1 =[]
xListGroup2 =[]
# 使用range時,迴圈的是索引,python裡叫序列
for index in range(len(xList)) :
cluster = xLable[index]
if(cluster==1):
xListGroup1.append( xList[index])
if(cluster==0):
xListGroup2.append( xList[index])
print ("xListGroup1",xListGroup1)
print ("xListGroup2",xListGroup2)
除錯得到結果:
如我們期待的一樣,前3個資料比較接近,後三個比較接近,所以,分兩組的話,就是前3個一組,後3個一組。
經驗
除錯時,刪除終端再建一個,不然有時候會出現莫名奇妙的異常,而實際上,程式碼並沒有錯誤,這個非常耽誤時間。
使用matplotlib
使用matplotlib的make_blobs函式,生成一個大一點的資料來源測試,程式碼如下:
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
xList, y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)
n_clusters = 2
cluster = KMeans(n_clusters=n_clusters, random_state=0).fit(xList)
xLable = cluster.labels_
# xlable 是上面那個集合,每個元素的所屬分組
print ("xLable",xLable)
xListGroup1 =[]
xListGroup2 =[]
# 使用range時,迴圈的是索引,python裡叫序列
for index in range(len(xList)) :
cluster = xLable[index]
if(cluster==1):
xListGroup1.append( xList[index])
if(cluster==0):
xListGroup2.append( xList[index])
print ("xListGroup1",xListGroup1)
print ("xListGroup2",xListGroup2)
結語
透過上面程式碼,我們簡簡單單的實現了一個機器學習。
如果想讓這個功能跟專案溝通,那就學習一下網路程式設計,寫一個http監聽,然後接一組資料,用上面程式碼處理完,返回一組資料即可。
同理,上面的程式碼可以換成opencv的,可以換成TensorFlow的。
注:此文章為原創,任何形式的轉載都請聯絡作者獲得授權並註明出處!
若您覺得這篇文章還不錯,請點選下方的【推薦】,非常感謝!
https://www.cnblogs.com/kiba/p/18098264