機器學習庫scikitlearn使用(一)

前言

基於

  1. Python scikit-learn機器學習庫
  2. 感謝scikit-learn中官方文文檔

目的

  1. 手動搭建自己的機器學習解決方案.
  2. 研究全球氣候變暖

概念

機器學習

Machine Learning we also call as Predictive Analytics,Statistical Learning.

早期

我們用if和else制定人爲規則,比如根據關鍵詞黑名單過濾垃圾郵件.

缺點

但是一套規則一次只能用於一個領域.需求稍有變化就得重寫整個系統.
其次制定規則的人必須對該領域的理解非常深刻,比如人臉識別規則.

監督學習

Supervised Learning Algorithm
方法
算法
輸入
input-output數據集
預期
算法
給定輸入得到預期輸出
前所未見的輸入
依然有相應的輸出

比如我們要獲得信用卡詐騙評估系統的機器學習模型,就需要輸入所有欺詐行爲和非欺詐行爲的輸入-輸出對

無監督學習

只有輸入,未知輸出.但是輸出一定與輸入有相同或相關的格式,範疇,概念.

Web Dangerous Assession
Unsupervised Learning Algorithm
不知道哪些是異常的訪問
輸入全部流量行爲
算法
分析異常流量特徵
上千篇博客
統計表徵
博客間相同的關鍵詞

樣本

不管何種算法,都需要喂數據

樣本Sample

一個樣本就是一條input-output對.我們先把數據處理爲計算機可理解的形式就是一個將數據轉化爲表格的過程.

一個樣本對應表格中的一行記錄row.
樣本的不同特徵feature對應表格的不同column屬性.

選擇良好的特徵,並收集到正確的數據對算法質量至關重要.比如我們想預測一個人的性別只收集他的姓是沒有用的,正確的做法是以他的名爲特徵.

graph TB
要解決的任務-->輸入的數據類型
輸入的數據類型-->恰當的特徵
恰當的特徵-->合適的輸入集
合適的輸入集-->算法
算法-->要解決的任務

Python

  1. 既有通用編程語言的強大,又有特點領域腳本語言的易用性.
  2. 還可以創建複雜的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)

總結:一維轉二維

配上一維行與一維列
array
一維
ones
arange
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

數據查詢與連接神器

數據庫
字典
Excel
CSV
pandas
query結果

利用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])

效果:
![image(http://note.youdao.com/yws/res/7371/5AF636BB47304EB482847E3D6779CD2F)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章