機(jī)器學(xué)習(xí)算法
線性回歸(Linear Regression)
線性回歸是一種用于回歸問題的算法,它通過學(xué)習(xí)輸入特征與目標(biāo)值之間的線性關(guān)系,來預(yù)測(cè)一個(gè)連續(xù)的輸出。
應(yīng)用場景:預(yù)測(cè)房價(jià)、股票價(jià)格等。
線性回歸的目標(biāo)是找到一個(gè)最佳的線性方程:

- y 是預(yù)測(cè)值(目標(biāo)值)。
- x1,x2,xn 是輸入特征。
- w1,w2,wn是待學(xué)習(xí)的權(quán)重(模型參數(shù))。
- b 是偏置項(xiàng)。

from skle.linear_model import LinearRegression from sklearn.model_selection import train_test_split import pandas as pd # 假設(shè)我們有一個(gè)簡單的房價(jià)數(shù)據(jù)集 data = { '面積': [50, 60, 80, 100, 120], '房價(jià)': [150, 180, 240, 300, 350] } df = pd.DataFrame(data) # 特征和標(biāo)簽 X = df[['面積']] y = df['房價(jià)'] # 數(shù)據(jù)分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 訓(xùn)練線性回歸模型 model = LinearRegression() model.fit(X_train, y_train) # 預(yù)測(cè) y_pred = model.predict(X_test) print(f"預(yù)測(cè)的房價(jià): {y_pred}")
邏輯回歸(Logistic Regression)
邏輯回歸是一種用于分類問題的算法,盡管名字中包含"回歸",它是用來處理二分類問題的。
邏輯回歸通過學(xué)習(xí)輸入特征與類別之間的關(guān)系,來預(yù)測(cè)一個(gè)類別標(biāo)簽。
應(yīng)用場景:垃圾郵件分類、疾病診斷(是否患病)。
邏輯回歸的輸出是一個(gè)概率值,表示樣本屬于某一類別的概率。
通常使用 Sigmoid 函數(shù):

from sklearn.linear_model import LogisticRegression from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加載鳶尾花數(shù)據(jù)集 iris = load_iris() X = iris.data y = iris.target # 只取前兩類做二分類任務(wù) X = X[y != 2] y = y[y != 2] # 數(shù)據(jù)分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 訓(xùn)練邏輯回歸模型 model = LogisticRegression() model.fit(X_train, y_train) # 預(yù)測(cè) y_pred = model.predict(X_test) # 評(píng)估模型 print(f"分類準(zhǔn)確率: {accuracy_score(y_test, y_pred):.2f}")
支持向量機(jī)(SVM)
支持向量機(jī)是一種常用的分類算法,它通過構(gòu)造超平面來最大化類別之間的間隔(Margin),使得分類的誤差最小。
應(yīng)用場景:文本分類、人臉識(shí)別等。
使用 SVM 進(jìn)行鳶尾花分類任務(wù):
from sklearn.svm import SVC from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加載鳶尾花數(shù)據(jù)集 iris = load_iris() X = iris.data y = iris.target # 數(shù)據(jù)分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 訓(xùn)練 SVM 模型 model = SVC(kernel='linear') model.fit(X_train, y_train) # 預(yù)測(cè) y_pred = model.predict(X_test) # 評(píng)估模型 print(f"SVM 分類準(zhǔn)確率: {accuracy_score(y_test, y_pred):.2f}")
決策樹(Decision Tree)
決策樹是一種基于樹結(jié)構(gòu)進(jìn)行決策的分類和回歸方法。它通過一系列的"判斷條件"來決定一個(gè)樣本屬于哪個(gè)類別。
應(yīng)用場景:客戶分類、信用評(píng)分等。
使用決策樹進(jìn)行分類任務(wù):
from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加載鳶尾花數(shù)據(jù)集 iris = load_iris() X = iris.data y = iris.target # 數(shù)據(jù)分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 訓(xùn)練決策樹模型 model = DecisionTreeClassifier(random_state=42) model.fit(X_train, y_train) # 預(yù)測(cè) y_pred = model.predict(X_test) # 評(píng)估模型 print(f"決策樹分類準(zhǔn)確率: {accuracy_score(y_test, y_pred):.2f}")
K-means 聚類(K-means Clustering)
K-means 是一種基于中心點(diǎn)的聚類算法,通過不斷調(diào)整簇的中心點(diǎn),使每個(gè)簇中的數(shù)據(jù)點(diǎn)盡可能靠近簇中心。
應(yīng)用場景:客戶分群、市場分析、圖像壓縮。
使用 K-means 進(jìn)行客戶分群:
from sklearn.cluster import KMeans from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # 生成一個(gè)簡單的二維數(shù)據(jù)集 X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) # 訓(xùn)練 K-means 模型 model = KMeans(n_clusters=4) model.fit(X) # 預(yù)測(cè)聚類結(jié)果 y_kmeans = model.predict(X) # 可視化聚類結(jié)果 plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis') plt.show()

主成分分析(PCA)
PCA 是一種降維技術(shù),它通過線性變換將數(shù)據(jù)轉(zhuǎn)換到新的坐標(biāo)系中,使得大部分的方差集中在前幾個(gè)主成分上。
應(yīng)用場景:圖像降維、特征選擇、數(shù)據(jù)可視化。
使用 PCA 降維并可視化高維數(shù)據(jù):
from sklearn.decomposition import PCA from sklearn.datasets import load_iris import matplotlib.pyplot as plt # 加載鳶尾花數(shù)據(jù)集 iris = load_iris() X = iris.data y = iris.target # 降維到 2 維 pca = PCA(n_components=2) X_pca = pca.fit_transform(X) # 可視化結(jié)果 plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis') plt.title('PCA of Iris Dataset') plt.show()


浙公網(wǎng)安備 33010602011771號(hào)