前言
基於
- Python scikit-learn機器學習庫
- 感謝scikit-learn中官方文文檔
目的
- 手動搭建自己的機器學習解決方案.
- 研究全球氣候變暖
概念
機器學習
Machine Learning we also call as Predictive Analytics,Statistical Learning.
早期
我們用if和else制定人爲規則,比如根據關鍵詞黑名單過濾垃圾郵件.
缺點
但是一套規則一次只能用於一個領域.需求稍有變化就得重寫整個系統.
其次制定規則的人必須對該領域的理解非常深刻,比如人臉識別規則.
監督學習
比如我們要獲得信用卡詐騙評估系統的機器學習模型,就需要輸入所有欺詐行爲和非欺詐行爲的輸入-輸出對
無監督學習
只有輸入,未知輸出.但是輸出一定與輸入有相同或相關的格式,範疇,概念.
樣本
不管何種算法,都需要喂數據
樣本Sample
一個樣本就是一條input-output對.我們先把數據處理爲計算機可理解的形式就是一個將數據轉化爲表格的過程.
一個樣本對應表格中的一行記錄row.
樣本的不同特徵feature對應表格的不同column屬性.
選擇良好的特徵,並收集到正確的數據對算法質量至關重要.比如我們想預測一個人的性別只收集他的姓是沒有用的,正確的做法是以他的名爲特徵.
graph TB
要解決的任務-->輸入的數據類型
輸入的數據類型-->恰當的特徵
恰當的特徵-->合適的輸入集
合適的輸入集-->算法
算法-->要解決的任務
Python
- 既有通用編程語言的強大,又有特點領域腳本語言的易用性.
- 還可以創建複雜的Graphical User Interface和靈活的Web服務
Numpy與Scipy
Numpy就是創建數組,再表現爲矩陣的python科學計算庫
# 利用array創建二維數組
x = numpy.array([[1,2,3],[4,5,6]])
print(x)
效果:
# 利用eye創建四維對角線Sparse_Matrix的稠密表示
x = numpy.eye(4)
print(x)
效果:
# 創建Sparse_Matrix的CSR表示
x = numpy.eye(4)
sparse_matrix = sparse.csr_matrix(x)
print(sparse_matrix)
效果:
# 利用ones批量創建元素都爲1的一維數組
data = numpy.ones(4)
print(data)
效果:
# 利用arange批量創建0起的自然排序的一維數組
rows = numpy.arange(4)
print(rows)
效果:
# 利用sparse.coo_matrix((data,(row,column)))按座標設置式創建矩陣
# 未設置矩陣部分默認爲0
data = numpy.ones(4)
rows = numpy.arange(4)
columns = numpy.arange(4)
coo_matrix = sparse.coo_matrix((data,(rows,columns)))
# coo_matrix直接就是稀疏矩陣的稀疏表示.只輸出非0的座標與對應的元素
print(coo_matrix)
總結:一維轉二維
Matplotlib
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# 設置字體實例myfont
myfont = matplotlib.font_manager.FontProperties(fname=r'/Users/huangmengyao/Library/Fonts/msyh.ttf')
x = np.linspace(-10, 10, 100)
y = np.sin(x)
plt.plot(x,y,marker="x",)
plt.title("y=sin(x)", fontproperties=myfont)
plt.xlabel("x軸", fontproperties=myfont)
plt.ylabel("y軸", fontproperties=myfont)
plt.show()
效果:
Pandas
數據查詢與連接神器
利用DataFrame格式化排版數據處理(查詢)結果
import pandas as pd
from IPython.display import display
# 一個Key-Value對就是一個column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
display(data_pandas)
效果:
import pandas as pd
from IPython.display import display
# 一個Key-Value對就是一個column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
# 找出所有滿足某類要求的記錄rows
display(data_pandas.Age > 30)
效果:
import pandas as pd
from IPython.display import display
# 一個Key-Value對就是一個column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
# 根據滿足要求的記錄rows顯示結果
display(data_pandas[data_pandas.Age > 30])
效果: