python 常用機器學習算法demo

python數據預處理方式

一、數據標準化
StandardScaler (基於特徵矩陣的列,將屬性值轉換至服從正態分佈)
標準化是依照特徵矩陣的列處理數據,即轉換爲均值爲0,方差爲1的正態分佈
將樣本的特徵值轉換到同一量綱下
常用與基於正態分佈的算法,比如迴歸

from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
import pandas as pd

data = [[0, 0, 2], [0, 0, 1], [1, 3, 1], [1, 2, 1]]
scaler = StandardScaler()
train_data = pd.DataFrame(data=scaler.fit_transform(data), columns=["a", "b", "c"])  # 轉化DataFrame數據類型,用於模型訓練
model = RandomForestClassifier(max_depth=3, n_estimators=10)  # 隨機森林的構造
model.fit(train_data, [1, 2, 1, 2])  # 傳入訓練數據與模擬標籤數據
print(model.predict([[1, 2, 3], [2, -1, 1]]))  # 傳入測試數據,支持傳遞DataFrame類型也支持傳遞二維數組

 

二、數據歸一化
MinMaxScaler (區間縮放,基於最大最小值,將數據轉換到0,1區間上的)
提升模型收斂速度,提升模型精度
常見用於神經網絡
 

from sklearn.preprocessing import MinMaxScaler
import pandas as pd

data = [[1, 2, 10], [3, 2, 7], [5, 6, 4, ], [7, 8, 1]]
scaler = MinMaxScaler(feature_range=(0, 1), copy=True)  # feature_range 手動指定範圍爲0到1之間
train_data = pd.DataFrame(data=scaler.fit_transform(data), columns=["a", "b", "c"])  # 轉化DataFrame數據類型,用於模型訓練

 

 

1.隨機森林

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
data_values = pd.DataFrame(data=[[1, 2], [2, 3], [3, 4]], columns=["k1", "k2"])  # data表示數據, columns表示列字段名稱
model = RandomForestClassifier(max_depth=3, n_estimators=10)  # max_depth 樹的最大深度,n_estimators 樹的數量
model.fit(data_values, pd.Series(data=[0, 1, 1]))
predict = model.predict([[1, 2], [2, 3]])
print(predict)

 

2.決策樹

import pandas as pd
from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier() # 隨機森林
data_values = pd.DataFrame(data=[[1, 2, 3, 0], [1, 4, 2, 1]], columns=["a", "b", "c", "label"]) # 構造模擬數據
train_label_data = data_values["label"]  # 獲取標籤列
train_feature_data = data_values.drop(["label"], axis=1)  # 刪除標籤列
model.fit(train_feature_data, train_label_data) # 開始訓練
test_data = pd.DataFrame(data=[[1, 2, 3], [1, 4, 2]]) # 使用模型
print(model.predict(test_data)) #使用模型檢測數據

3.邏輯迴歸

from sklearn.linear_model import LogisticRegression
model = LogisticRegression() #定義模型對象,使用模型參考之前的步驟

4.SVM支持向量機

from sklearn import svm
model = svm.SVC()

 

5.python服務封裝

from flask import Flask, request, jsonify
app = Flask(__name__)

if __name__ == '__main__':
    app.config['JSON_AS_ASCII'] = False # 設置中文響應格式不亂碼
    app.run(host="0.0.0.0", port=5000)

def format_request():
    """
    格式化請求參數
    :return: 將參數以key和value的形式返回
    """
    param = {}
    for k, v in request.args.items():
        param[k] = eval(v)
    data = request.get_data()
    if data != b'':
        for k, v in json.loads(data.decode('utf-8')).items():
            param[k] = v
    return param

@app.route('/test', methods=['POST', 'GET'])
def test():
    """
    測試入口
    :return:
    """
    param = format_request()
    logger.info(param)
    response = {}
    for k, v in param.items():
        response[k] = v
    return jsonify(response)

 

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