機器學習基礎
1. 數(shù)據(jù)集
2. 特征工程
3. 學習分類
4. 模型
5. 損失函數(shù)
6. 優(yōu)化
7. 過擬合
8. 欠擬合
數(shù)據(jù)集
又稱資料集、數(shù)據(jù)集合或者資料集合,是一種由數(shù)據(jù)所組成的集合
特征工程
1. 特征需求
2. 特征設計
3. 特征處理
特征預處理、特征選擇、特征降維
4. 特征驗證
特征預處理
特征預處理:
1.無量綱化
2.信息提取
3.信息數(shù)據(jù)化
4.缺失補全
5.信息利用率均衡
無量綱化
1.標準化
import numpy as np
# 從sklearn框架的 preprocessing預處理模塊中導入StandardScaler類
from sklearn.preprocessing import StandardScaler
# 準備7個點的x坐標
x = np.arange(7).reshape(7, 1)
# 準備7個點的y坐標
y = np.array([2, 10, 35, 100, 45, 20, 5]).reshape(7, 1)
# 將x和y合并成一個二維數(shù)組,代表7個點的數(shù)據(jù),每行代表一個點的(x, y)坐標值
# x_data就成為 機器學習的數(shù)據(jù)集
x_data = np.hstack((x, y))
print(x_data)
# 數(shù)學公式 :x = (x - x_mean)/x_std 數(shù)學公式的標準化處理
# np.mean() : 求平均值
# np.std() : 求方差,標準差
xx = (x_data - np.mean(x_data))/np.std(x_data)
print(xx)
# 實例標準化處理的類對象
scaler = StandardScaler()
# 通過類對象標準化處理數(shù)據(jù) fit_transform() : 處理數(shù)據(jù)
xx = scaler.fit_transform(x_data)
print(xx)
"""
標準化使用前提:讓數(shù)據(jù)處理后處于同一規(guī)格,并且任然呈現(xiàn) 正態(tài)分布
1、數(shù)據(jù)的規(guī)格或者單位不一致
2、數(shù)據(jù)成正態(tài)分布
"""
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\1.特征預處理\1.無量綱化\1.標準化.py
[[ 0 2]
[ 1 10]
[ 2 35]
[ 3 100]
[ 4 45]
[ 5 20]
[ 6 5]]
[[-0.64175426 -0.56625376]
[-0.60400401 -0.26425176]
[-0.56625376 0.67950451]
[-0.52850351 3.13327081]
[-0.49075326 1.05700702]
[-0.45300301 0.11325075]
[-0.41525276 -0.45300301]]
[[-1.5 -0.91367316]
[-1. -0.66162539]
[-0.5 0.12602388]
[ 0. 2.173912 ]
[ 0.5 0.44108359]
[ 1. -0.34656568]
[ 1.5 -0.81915524]]
進程已結束,退出代碼0
2.歸一化
import numpy as np
# 從sklearn框架的 preprocessing預處理模塊中導入Normalizer歸一化處理類
from sklearn.preprocessing import Normalizer
# 準備7個點的x坐標
x = np.arange(7).reshape(7, 1)
# 準備7個點的y坐標
y = np.array([2, 10, 35, 60, 100, 200, 250]).reshape(7, 1)
x_data = np.hstack((x, y))
# 數(shù)學公式 : x = (x - x_mean)/(x_max - x_min)
xx = (x_data - np.mean(x_data)) / (np.max(x_data) - np.min(x_data))
print(x_data)
print(xx)
normalizer = Normalizer()
xx = normalizer.fit_transform(x_data)
print(xx)
"""
歸一化處理前提:處理后的數(shù)據(jù)處于同一量級,并且被縮放到[0, 1]之間
1.數(shù)據(jù)規(guī)格或者單位不一致
2.數(shù)據(jù)沒有呈現(xiàn)正態(tài)分布,呈現(xiàn)線性變化
"""
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\1.特征預處理\1.無量綱化\2.歸一化.py
[[ 0 2]
[ 1 10]
[ 2 35]
[ 3 60]
[ 4 100]
[ 5 200]
[ 6 250]]
[[-0.19371429 -0.18571429]
[-0.18971429 -0.15371429]
[-0.18571429 -0.05371429]
[-0.18171429 0.04628571]
[-0.17771429 0.20628571]
[-0.17371429 0.60628571]
[-0.16971429 0.80628571]]
[[0. 1. ]
[0.09950372 0.99503719]
[0.05704979 0.99837133]
[0.04993762 0.99875234]
[0.03996804 0.99920096]
[0.02499219 0.99968765]
[0.02399309 0.99971212]]
進程已結束,退出代碼0
信息數(shù)據(jù)化
1.特征二值化
import numpy as np
# 從框架的 預處理模塊導入 特征二值化處理類 Binarizer
from sklearn.preprocessing import Binarizer
x = np.array([20, 35, 40, 75, 60, 55, 50]).reshape(-1, 1)
# 構造二值化對象,設定分類的閾值 threshold=50
scaler = Binarizer(threshold=50)
# 處理數(shù)據(jù)
xx = scaler.fit_transform(x)
print(xx)
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\1.特征預處理\2.信息數(shù)據(jù)化\1.特征二值化.py
[[0]
[0]
[0]
[1]
[1]
[1]
[0]]
2. Ont-hot編碼
"""
ont-hot編碼,又稱獨熱編碼。目的是保證每個數(shù)據(jù) 距遠點相同位置。每個可能出現(xiàn)的結果概率相同
"""
import numpy as np
from sklearn.preprocessing import OneHotEncoder
y = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape(-1, 1)
# 構造ont-hot編碼對象,指定sparse存儲方式:稀疏存儲方式False
scaler = OneHotEncoder(sparse=False)
yy = scaler.fit_transform(y)
print(yy)
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\1.特征預處理\2.信息數(shù)據(jù)化\ont-hot編碼.py
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
3.缺失數(shù)據(jù)補全
import numpy as np
# 缺失數(shù)據(jù)補全
from sklearn.impute import SimpleImputer
x = np.array([[1, 2, 3, 4],
[1, np.nan, 5, 6],
[7, 2, np.nan, 11],
[np.nan, 25, 25, 16]])
# 構造補全法的類對象,指定補全的方法
"""
補全方法 strategy:
1.“mean”:平均數(shù)補齊法。當前特征列其余數(shù)據(jù)的平均值
2."median":中位數(shù)補全法。數(shù)據(jù)從小到大中間的數(shù)據(jù)
3."most_frequent":出現(xiàn)次數(shù)最多的數(shù)據(jù)補全。如果出現(xiàn)次數(shù)都一樣,則取第一個
"""
xx = SimpleImputer(strategy="mean").fit_transform(x)
xx = SimpleImputer(strategy="median").fit_transform(x)
xx = SimpleImputer(strategy="most_frequent").fit_transform(x)
xx = SimpleImputer(strategy="constant").fit_transform(x)
print(xx)
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\1.特征預處理\2.信息數(shù)據(jù)化\缺失數(shù)據(jù)補全.py
[[ 1. 2. 3. 4.]
[ 1. 0. 5. 6.]
[ 7. 2. 0. 11.]
[ 0. 25. 25. 16.]]
特征選擇
1.方差選擇法
import numpy as np
# 從框架的 特征選擇模塊導入 VarianceThreshold方差選擇法
from sklearn.feature_selection import VarianceThreshold
x = np.array([
[78, 23, 12, 34, 98],
[23, 22, 13, 56, 71],
[10, 21, 14, 31, 60],
[5, 29, 26, 30, 40]])
# 計算各特征列的方差值
# x.shape --> (4, 5) x.shape[1] ==> 5
for i in range(x.shape[1]):
# np.var() :計算數(shù)據(jù)的方差
print("第{}列的方差值為{}" .format(i, np.var(x[:, i])))
# 方差值越小說明該特征列的數(shù)據(jù)發(fā)散性不好,對于機器學習沒有什么意義,因此需要省略
# 構造方差選擇法的對象,指定篩選的方差閾值為100,保留方差值大于100的特征列
feature = VarianceThreshold(threshold=100)
xx = feature.fit_transform(x)
print(xx)
# variances_:該屬性返回 各特征列的方差值
print(feature.variances_)
"""
方差選擇法:特征列數(shù)據(jù)越發(fā)散,特征就越明顯,方差值就越大
1.特征選擇法,可以讓預處理后的特征數(shù)據(jù)量減小,提升機器學習的效率
2.特征量少了,特征值反而更明顯,機器學習的準確性更強
"""
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\2.特征選擇\1.方差選擇法.py
第0列的方差值為843.5
第1列的方差值為9.6875
第2列的方差值為32.1875
第3列的方差值為113.1875
第4列的方差值為438.6875
[[78 34 98]
[23 56 71]
[10 31 60]
[ 5 30 40]]
[843.5 9.6875 32.1875 113.1875 438.6875]
2.相關系數(shù)法
"""
相關系數(shù)法:判斷特征數(shù)據(jù)對于目標(結果)的相關性。相關性越強說明特征越明顯
"""
import numpy as np
from sklearn.feature_selection import SelectKBest
x = np.array([
[78, 23, 12, 34, 98],
[23, 22, 13, 56, 71],
[10, 21, 14, 31, 60],
[5, 29, 26, 30, 40]])
# 準備數(shù)據(jù)集的目標(標簽):數(shù)據(jù)集有4條數(shù)據(jù),標簽就應該有4個, 只能用0和1表示
y = np.array([1, 1, 1, 0])
# 構造 相關系數(shù)選擇法的對象,指定相關性最強的 k列數(shù)據(jù)保存
k = SelectKBest(k=3)
xx = k.fit_transform(x, y)
# pvalues : 相關系數(shù) p值,p值越小相關性越強;
# scores_ : 相關系數(shù) s值,s值越小,相關性越弱
print(k.pvalues_)
print(k.scores_)
print(xx)
D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day6\2.特征選擇\2.相關系數(shù)法.py
[0.5229015 0.02614832 0.00779739 0.5794261 0.24884702]
[ 0.58940905 36.75 126.75 0.42978638 2.5895855 ]
[[23 12 98]
[22 13 71]
[21 14 60]
[29 26 40]]
文章來源地址http://www.zghlxwxcb.cn/news/detail-622310.html
文章來源:http://www.zghlxwxcb.cn/news/detail-622310.html
到了這里,關于機器學習基礎 數(shù)據(jù)集、特征工程、特征預處理、特征選擇 7.27的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!