中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

設(shè)計(jì)專業(yè)干貨推薦網(wǎng)站代發(fā)軟文

設(shè)計(jì)專業(yè)干貨推薦網(wǎng)站,代發(fā)軟文,深圳設(shè)計(jì)平臺,那些企業(yè)網(wǎng)站做的漂亮一.K-近鄰(KNN) K-近鄰(K-Nearest Neighbors, 簡稱 KNN)是一種基于實(shí)例的學(xué)習(xí)算法,主要用于分類和回歸問題。KNN 的工作原理直觀且簡單,它基于相似性進(jìn)行預(yù)測,也就是說給定一個(gè)新的數(shù)據(jù)點(diǎn),KNN 算法會查找距…

一.K-近鄰(KNN)

  • K-近鄰(K-Nearest Neighbors, 簡稱 KNN)是一種基于實(shí)例的學(xué)習(xí)算法,主要用于分類和回歸問題。KNN 的工作原理直觀且簡單,它基于相似性進(jìn)行預(yù)測,也就是說給定一個(gè)新的數(shù)據(jù)點(diǎn),KNN 算法會查找距離最近的 K 個(gè)數(shù)據(jù)點(diǎn),然后通過這些鄰居來確定新數(shù)據(jù)點(diǎn)的類別(在分類任務(wù)中)或數(shù)值(在回歸任務(wù)中)。

KNN 的工作原理

  1. 選擇 K 值

    • K 是算法中的一個(gè)超參數(shù),表示在做出預(yù)測時(shí)要參考的最近鄰居的數(shù)量。常見的取值是 3、5、7 等。
    • K 值的選擇直接影響模型性能。較小的 K 值使模型對局部噪聲更敏感,而較大的 K 值則會使模型過于平滑,可能會錯(cuò)過局部模式。
  2. 計(jì)算距離

    • 常用的距離度量方式是歐幾里得距離,也可以使用曼哈頓距離、閔可夫斯基距離等。
    • 歐幾里得距離公式:
      d = ∑ i = 1 n ( x i ? y i ) 2 d = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} d=i=1n?(xi??yi?)2 ?

    其中,x 和 y 是兩個(gè)數(shù)據(jù)點(diǎn), n 是特征的數(shù)量。

  3. 確定最近的 K 個(gè)鄰居

    • 根據(jù)計(jì)算得到的距離,選出距離最近的 K 個(gè)點(diǎn)作為鄰居。
  4. 分類(對于分類問題)

    • 在分類任務(wù)中,KNN 通過讓 K 個(gè)最近鄰居中的多數(shù)投票來決定新數(shù)據(jù)點(diǎn)的類別。
    • 例如,如果在 K=5 的情況下,有 3 個(gè)鄰居屬于類別 A,2 個(gè)屬于類別 B,那么預(yù)測結(jié)果將是類別 A。
  5. 回歸(對于回歸問題)

    • 在回歸任務(wù)中,KNN 通過計(jì)算 K 個(gè)最近鄰居的平均值(或加權(quán)平均值)來預(yù)測新數(shù)據(jù)點(diǎn)的數(shù)值。

KNN 算法的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 簡單直觀,易于理解和實(shí)現(xiàn)。
  • 不需要訓(xùn)練階段,屬于“懶惰學(xué)習(xí)”(Lazy Learning),即模型在訓(xùn)練階段幾乎不做計(jì)算,預(yù)測時(shí)才進(jìn)行計(jì)算。
  • 可用于多類別分類問題。

缺點(diǎn)

  • 計(jì)算復(fù)雜度高:由于在預(yù)測時(shí)需要計(jì)算每個(gè)數(shù)據(jù)點(diǎn)與新數(shù)據(jù)點(diǎn)的距離,特別是在數(shù)據(jù)量大時(shí),計(jì)算開銷較大。
  • 對數(shù)據(jù)的標(biāo)度敏感:特征的不同標(biāo)度(如度量單位不同)可能會影響距離計(jì)算,因此通常需要對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化或歸一化。
  • 對噪聲敏感:K 值較小時(shí),噪聲點(diǎn)可能會對結(jié)果產(chǎn)生較大影響。

適用場景

  • 小數(shù)據(jù)集:由于 KNN 的計(jì)算開銷較大,它更適合于小型數(shù)據(jù)集。
  • 多類別分類:KNN 可以很好地處理多類別分類問題。
  • 實(shí)例具有自然分組的情況:如果數(shù)據(jù)本身具有天然的分組或簇結(jié)構(gòu),KNN 能夠很好地捕捉這些模式。

KNN 算法的代碼示例(分類任務(wù))

下面是一個(gè)簡單的 KNN 分類任務(wù)代碼示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target# 劃分訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 初始化KNN分類器,設(shè)置K=3
knn = KNeighborsClassifier(n_neighbors=3)# 訓(xùn)練模型
knn.fit(X_train, y_train)# 預(yù)測
y_pred = knn.predict(X_test)# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型準(zhǔn)確率: {accuracy}")

KNeighborsClassifier 參數(shù)詳細(xì)解釋

  1. n_neighbors:

    • 解釋: 指定參與投票的最近鄰居的數(shù)量,即 K 值。
    • 類型: 整數(shù)。
    • 默認(rèn)值: 5。
    • 作用: 決定了模型在分類時(shí)會考慮多少個(gè)最近鄰居。例如,n_neighbors=3 表示將選擇距離最近的 3 個(gè)樣本進(jìn)行投票。
    • 示例: n_neighbors=3
  2. weights:

    • 解釋: 決定如何計(jì)算每個(gè)鄰居的投票權(quán)重。常見的選項(xiàng)有:
      • 'uniform': 所有鄰居的權(quán)重相等。
      • 'distance': 根據(jù)距離進(jìn)行加權(quán),距離越近的鄰居權(quán)重越高。
      • 自定義函數(shù):可以傳入一個(gè)用戶定義的函數(shù),基于該函數(shù)計(jì)算權(quán)重。
    • 類型: 字符串或可調(diào)用函數(shù)。
    • 默認(rèn)值: 'uniform'
    • 作用: 影響分類決策。如果選擇 'distance',那么更近的鄰居對分類結(jié)果影響更大。
    • 示例: weights='distance'
  3. algorithm:

    • 解釋: 用于計(jì)算最近鄰居的算法,有以下幾種選擇:
      • 'auto': 自動選擇最合適的算法(根據(jù)數(shù)據(jù)的特征選擇)。
      • 'ball_tree': 使用 Ball Tree 數(shù)據(jù)結(jié)構(gòu),適合高維數(shù)據(jù)。
      • 'kd_tree': 使用 KD Tree 數(shù)據(jù)結(jié)構(gòu),適合低維數(shù)據(jù)。
      • 'brute': 直接進(jìn)行暴力搜索,計(jì)算所有點(diǎn)的距離。
    • 類型: 字符串。
    • 默認(rèn)值: 'auto'。
    • 作用: 控制最近鄰居搜索的速度和內(nèi)存效率,通常建議使用默認(rèn)的 'auto' 選項(xiàng)。
    • 示例: algorithm='kd_tree'
  4. leaf_size:

    • 解釋: 指定 Ball Tree 或 KD Tree 的葉子節(jié)點(diǎn)大小,影響樹的構(gòu)建和查詢速度。較小的葉子節(jié)點(diǎn)通常會帶來更快的查詢速度,但會消耗更多的內(nèi)存。
    • 類型: 整數(shù)。
    • 默認(rèn)值: 30。
    • 作用: 在使用 'ball_tree''kd_tree' 算法時(shí),可以調(diào)整該值以優(yōu)化查詢性能。
    • 示例: leaf_size=20
  5. p:

    • 解釋: 當(dāng)使用 minkowski 距離度量時(shí),定義了距離公式中的冪指數(shù):
      • 當(dāng) p=1 時(shí),使用曼哈頓距離(L1)。
      • 當(dāng) p=2 時(shí),使用歐幾里得距離(L2)。
    • 類型: 整數(shù)。
    • 默認(rèn)值: 2。
    • 作用: 控制距離的計(jì)算方式,可以根據(jù)數(shù)據(jù)特性調(diào)整該參數(shù)。
    • 示例: p=1(使用曼哈頓距離)
  6. metric:

    • 解釋: 指定距離度量的方式。常用選項(xiàng)有:
      • 'minkowski': 閔可夫斯基距離,是歐幾里得距離和曼哈頓距離的泛化形式。
      • 'euclidean': 歐幾里得距離,等同于 minkowski 距離與 p=2 的組合。
      • 'manhattan': 曼哈頓距離,等同于 minkowski 距離與 p=1 的組合。
      • 其他度量方法如 'chebyshev' 或自定義距離函數(shù)。
    • 類型: 字符串或可調(diào)用函數(shù)。
    • 默認(rèn)值: 'minkowski'。
    • 作用: 控制如何計(jì)算樣本之間的距離,影響最近鄰居的選擇。
    • 示例: metric='euclidean'
  7. metric_params:

    • 解釋: 距離度量函數(shù)的附加參數(shù)(可選)。如果使用自定義的距離函數(shù),可以通過這個(gè)參數(shù)傳遞額外信息。
    • 類型: 字典或 None
    • 默認(rèn)值: None。
    • 作用: 用于在自定義度量函數(shù)時(shí),提供額外的控制參數(shù)。
    • 示例: metric_params={'w': [1, 2, 3]}(示例自定義權(quán)重)
  8. n_jobs:

    • 解釋: 用于并行處理最近鄰居搜索的線程數(shù)量。如果設(shè)置為 -1,則使用所有可用的 CPU 核心進(jìn)行計(jì)算。
    • 類型: 整數(shù)。
    • 默認(rèn)值: None(使用單個(gè) CPU 核心)。
    • 作用: 在大數(shù)據(jù)集上可以使用多線程加速計(jì)算,縮短模型訓(xùn)練和預(yù)測時(shí)間。
    • 示例: n_jobs=-1

二.K-折交叉驗(yàn)證

K-折交叉驗(yàn)證(K-Fold Cross-Validation)是一種常用的模型評估方法,廣泛用于機(jī)器學(xué)習(xí)中。它通過將數(shù)據(jù)集劃分為 K 個(gè)相同大小的子集(稱為“折”),來多次訓(xùn)練和測試模型,從而獲得更穩(wěn)定和可靠的性能評估。

工作原理

  1. 劃分?jǐn)?shù)據(jù)集:

    • 將整個(gè)數(shù)據(jù)集隨機(jī)劃分成 K 個(gè)等大小的子集。每個(gè)子集稱為一個(gè)“折”。
  2. 訓(xùn)練和驗(yàn)證:

    • 在每次迭代中,選擇其中一個(gè)折作為驗(yàn)證集,剩余的 K-1 個(gè)折作為訓(xùn)練集。
    • 這個(gè)過程會重復(fù) K 次,每次選擇不同的折作為驗(yàn)證集,其余折作為訓(xùn)練集。
  3. 計(jì)算平均性能:

    • 每次迭代都會得到一個(gè)模型的性能度量(如準(zhǔn)確率、F1 分?jǐn)?shù)等)。最終將 K 次迭代的性能結(jié)果進(jìn)行平均,得到整體的模型性能。

優(yōu)點(diǎn)

  • 穩(wěn)定的性能評估: 通過多次迭代,K-折交叉驗(yàn)證減小了模型評估中的隨機(jī)性,得到的結(jié)果更具穩(wěn)定性。
  • 充分利用數(shù)據(jù): 每一個(gè)樣本都在不同的折中被用作訓(xùn)練和驗(yàn)證集,避免了數(shù)據(jù)浪費(fèi)。

參數(shù)選擇

  • K 的取值: K 通常取值為 5 或 10,這兩種配置在大多數(shù)應(yīng)用中效果較好。較小的 K 值(如 2 或 3)會導(dǎo)致較大的方差,而較大的 K 值(如 20)則增加了計(jì)算開銷。
  • Shuffle(可選): 在劃分?jǐn)?shù)據(jù)集之前,可以選擇對數(shù)據(jù)進(jìn)行洗牌(shuffle),以確保每個(gè)折的樣本分布更隨機(jī)。

代碼示例

下面是一個(gè)使用 scikit-learn 實(shí)現(xiàn) K-折交叉驗(yàn)證的示例:

from sklearn.model_selection import KFold
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target# 初始化K折交叉驗(yàn)證
kf = KFold(n_splits=5, shuffle=True, random_state=42)# 存儲每折的準(zhǔn)確率
accuracies = []# 執(zhí)行交叉驗(yàn)證
for train_index, test_index in kf.split(X):X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]# 初始化并訓(xùn)練模型model = LogisticRegression(max_iter=200)model.fit(X_train, y_train)# 預(yù)測并計(jì)算準(zhǔn)確率y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)accuracies.append(accuracy)# 輸出結(jié)果
print(f"每折的準(zhǔn)確率: {accuracies}")
print(f"平均準(zhǔn)確率: {np.mean(accuracies)}")

解釋

  • KFold(n_splits=5, shuffle=True, random_state=42):

    • n_splits=5 指定將數(shù)據(jù)集劃分為 5 個(gè)折。
    • shuffle=True 表示在分割數(shù)據(jù)之前打亂數(shù)據(jù),以確保每個(gè)折的樣本分布更加隨機(jī)。
    • random_state=42 確保結(jié)果的可重復(fù)性。
  • kf.split(X):

    • 生成訓(xùn)練集和測試集的索引。對于每一折,都會用不同的折作為測試集。

三.分層k-折交叉驗(yàn)證(Stratified k-fold)

StratifiedKFold 參數(shù)

  1. n_splits:

    • 解釋: 指定將數(shù)據(jù)集劃分成多少個(gè)折(子集)。
    • 類型: 整數(shù)。
    • 默認(rèn)值: 5。
    • 示例: n_splits=5 表示數(shù)據(jù)將被分成 5 個(gè)折。
  2. shuffle:

    • 解釋: 指定是否在分割之前對數(shù)據(jù)進(jìn)行洗牌(打亂順序)。如果為 True,則在分割數(shù)據(jù)之前會對數(shù)據(jù)進(jìn)行打亂,減少樣本順序?qū)δP驮u估的影響。
    • 類型: 布爾值。
    • 默認(rèn)值: False。
    • 示例: shuffle=True 表示在分割之前打亂數(shù)據(jù)。
  3. random_state:

    • 解釋: 用于控制隨機(jī)數(shù)生成器的種子,確保結(jié)果的可重復(fù)性。當(dāng) shuffle=True 時(shí)使用。
    • 類型: 整數(shù)或 None。
    • 默認(rèn)值: None。
    • 示例: random_state=42 確保在每次運(yùn)行時(shí)數(shù)據(jù)劃分的一致性。
  4. min_groups (僅在 scikit-learn 版本 0.24 及以后版本中可用):

    • 解釋: 用于指定每個(gè)折中樣本的最小組數(shù)。主要用于對分層 K-折交叉驗(yàn)證的樣本量進(jìn)行控制,確保每一折中至少有指定數(shù)量的組。
    • 類型: 整數(shù)。
    • 默認(rèn)值: 1。
    • 示例: min_groups=5 表示每個(gè)折中至少包含 5 個(gè)組。

使用示例

from sklearn.model_selection import StratifiedKFold
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target# 初始化分層K折交叉驗(yàn)證
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)# 存儲每折的準(zhǔn)確率
accuracies = []# 執(zhí)行交叉驗(yàn)證
for train_index, test_index in skf.split(X, y):X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]# 初始化并訓(xùn)練模型model = LogisticRegression(max_iter=200)model.fit(X_train, y_train)# 預(yù)測并計(jì)算準(zhǔn)確率y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)accuracies.append(accuracy)# 輸出結(jié)果
print(f"每折的準(zhǔn)確率: {accuracies}")
print(f"平均準(zhǔn)確率: {np.mean(accuracies)}")

四.模型與加載

在 scikit-learn 中,保存和加載模型通常使用 joblibpickle。joblib 是 scikit-learn 推薦的方式,因?yàn)樗谔幚泶笮湍P?#xff08;如包含大量數(shù)組的模型)時(shí)效率更高。

1. 使用 joblib 保存和加載模型

模型保存
import joblib# 保存模型到文件
joblib.dump(knn, 'knn_model.pkl')
模型加載
# 從文件加載模型
loaded_model = joblib.load('knn_model.pkl')# 使用加載的模型進(jìn)行預(yù)測
y_pred = loaded_model.predict(X_test)

2. 使用 pickle 保存和加載模型

模型保存
import pickle# 保存模型到文件
with open('knn_model.pkl', 'wb') as file:pickle.dump(knn, file)
模型加載
# 從文件加載模型
with open('knn_model.pkl', 'rb') as file:loaded_model = pickle.load(file)# 使用加載的模型進(jìn)行預(yù)測
y_pred = loaded_model.predict(X_test)

總結(jié)

  • joblib 更適合包含大量數(shù)組的模型。
  • pickle 適用于一般情況下的模型保存和加載。

五.超參數(shù)搜索

  • 超參數(shù)搜索(Hyperparameter Tuning)是機(jī)器學(xué)習(xí)模型優(yōu)化的重要步驟。不同的超參數(shù)配置會對模型的性能產(chǎn)生顯著影響,因此找到最優(yōu)的超參數(shù)組合對于提升模型性能至關(guān)重要。
class sklearn.model_selection.GridSearchCV(estimator, param_grid)

說明:
同時(shí)進(jìn)行交叉驗(yàn)證(CV)、和網(wǎng)格搜索(GridSearch),GridSearchCV實(shí)計(jì)上也是一個(gè)估計(jì)器(estimator),同時(shí)它有幾個(gè)重要屬性:
best_params_ 最佳參數(shù)
best_score_ 在訓(xùn)練集中的準(zhǔn)確率
best_estimator_ 最佳估計(jì)器
cv_results_ 交叉驗(yàn)證過程描述
best_index_最佳k在列表中的下標(biāo)

完整示例代碼

    #   best_params_  最佳參數(shù)#   best_score_ 在訓(xùn)練集中的準(zhǔn)確率#   best_estimator_ 最佳估計(jì)器#   cv_results_ 交叉驗(yàn)證過程描述#   best_index_最佳k在列表中的下標(biāo)from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler #標(biāo)準(zhǔn)化
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier #KNN
from sklearn.model_selection import GridSearchCV #超參數(shù)GridSearchCV
from sklearn.decomposition import PCA #PCA降維
import pandas as pddata = load_wine()#數(shù)據(jù)結(jié)構(gòu) 
x = pd.DataFrame(data.data,columns=data.feature_names)#標(biāo)準(zhǔn)化
tr = StandardScaler()
x2 = tr.fit_transform(x)#數(shù)據(jù)結(jié)構(gòu) 
data2 = pd.DataFrame(x2,columns=data.feature_names)#PCA降維
transfer1 = PCA(n_components=0.5)
data2 = transfer1.fit_transform(data2)x_train,x_test,y_train,y_test = train_test_split(data2,data.target,test_size=0.2,random_state=33)#創(chuàng)建模型
param = {'n_neighbors':[1,2,3,4,5,6,7,8,9,10]}#knn
model = KNeighborsClassifier()
model = GridSearchCV(model,param)
model.fit(x_train,y_train)#預(yù)測
predict = model.predict(x_test)score = model.score(x_test,y_test)print("最佳模型:", model.best_estimator_)
print("最佳參數(shù):\n",model.best_params_)
print("最佳k在列表中的下標(biāo):\n",model.best_index_)
print("在訓(xùn)練集中的準(zhǔn)確率:\n",model.best_score_)
print("最佳估計(jì)器:\n",model.best_estimator_)
print("交叉驗(yàn)證過程描述:\n",model.cv_results_)

總結(jié)

  • best_params_:最優(yōu)的超參數(shù)組合。
  • best_score_:在交叉驗(yàn)證中的最佳平均得分。
  • best_estimator_:使用最佳超參數(shù)組合訓(xùn)練的模型。
  • cv_results_:交叉驗(yàn)證過程中所有超參數(shù)組合的詳細(xì)結(jié)果。
  • best_index_:最優(yōu)超參數(shù)組合在結(jié)果中的索引。

這些屬性為你提供了全面的模型優(yōu)化信息,幫助你選擇和評估最佳模型。

實(shí)例:葡萄酒–分層k-折交叉驗(yàn)證

from sklearn.datasets import load_wine
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import StratifiedKFold
import pandas as pd
import numpy as np
#加載數(shù)據(jù)
data = load_wine()X = pd.DataFrame(data=data.data,columns=data.feature_names)#標(biāo)準(zhǔn)化
transfer = StandardScaler()
X1 = transfer.fit_transform(X)
X2 = pd.DataFrame(X1,columns=data.feature_names)#降維
transfer1 = PCA(n_components=0.5)
data1 = transfer1.fit_transform(X2)#分層k-折交叉驗(yàn)證Stratified k-fold
skf = StratifiedKFold(n_splits=10,shuffle=True,random_state=2)#儲存每折準(zhǔn)確率
accuracies = []for train_index,test_index in skf.split(data1,data.target):x_train,x_test = data1[train_index],data1[test_index]y_train,y_test = data.target[train_index],data.target[test_index]#K近鄰模型estimator = KNeighborsClassifier(n_neighbors=9)estimator.fit(x_train,y_train)#預(yù)測y_predict = estimator.predict(x_test)# print("y_predict:\n",y_test ==y_predict)#計(jì)算準(zhǔn)確率score = estimator.score(x_test,y_test)accuracies.append(score)print(accuracies)
print(np.mean(accuracies))

實(shí)例2 葡萄酒–K-折交叉驗(yàn)證(K-fold)

from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import KFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.decomposition import PCA
import pandas as pd
import joblibdata = load_wine()x = pd.DataFrame(data.data,columns=data.feature_names)#標(biāo)準(zhǔn)化
sta = StandardScaler()
x1 = sta.fit_transform(x)x2 = pd.DataFrame(x1,columns=data.feature_names)#降維
tra = PCA(n_components=0.6)data1 = tra.fit_transform(x2)kf = KFold(n_splits=10,shuffle=True,random_state=33)
#標(biāo)準(zhǔn)化
accuracies =[]
best_accuracy = 0
best_model = Nonefor train_index,test_index in kf.split(data1,data.target):x_train,x_test = data1[train_index],data1[test_index]y_train,y_test = data.target[train_index],data.target[test_index]#創(chuàng)建模型model = KNeighborsClassifier(n_neighbors=7)model.fit(x_train,y_train)#預(yù)測predict = model.predict(x_test)#準(zhǔn)確率score = model.score(x_test,y_test)accuracies.append(score)if score > best_accuracy:best_accuracy = scorebest_model = model# print("模型評估率:\n",accuracies)
# print("平均得分:\n",np.mean(accuracies))joblib.dump(best_model,'./src/KNNmodel.pkl')
# 輸出結(jié)果
print(f"每折的準(zhǔn)確率: {accuracies}")
print(f"最高準(zhǔn)確率: {best_accuracy}")

實(shí)例:mytool 函數(shù)的功能

mytool 函數(shù)的功能是計(jì)算一個(gè)文本數(shù)據(jù)集中每個(gè)詞的 TF-IDF 值。TF-IDF 是一種常用的文本挖掘方法,用于衡量一個(gè)詞在文檔中的重要性。

import math  
from collections import defaultdict  def calculate_tfidf(data):  total_documents = len(data)  word_document_count = defaultdict(int)  # 統(tǒng)計(jì)每個(gè)詞在文檔中出現(xiàn)的次數(shù)  for document in data:  unique_words = set(document.split())  for word in unique_words:  word_document_count[word] += 1  tfidf_matrix = []  # 計(jì)算每個(gè)文檔的TF-IDF  for document in data:  word_list = document.split()  total_words = len(word_list)  tfidf_scores = []  for word in set(word_list):  TF = word_list.count(word) / total_words  IDF = math.log(total_documents / (1 + word_document_count[word]))  tfidf_scores.append(TF * IDF)  tfidf_matrix.append(tfidf_scores)  return tfidf_matrix  # 示例使用  
data = ['世界 你好 我 是 華清 遠(yuǎn)見 的 張三','你好 世界 我 是 李四 世界','華清 遠(yuǎn)見 666'
] result = calculate_tfidf(data)  
print(result)
http://www.risenshineclean.com/news/54848.html

相關(guān)文章:

  • wordpress站長統(tǒng)計(jì)韓國seocaso
  • 網(wǎng)站連接數(shù)據(jù)庫失敗免費(fèi)建網(wǎng)站哪家好
  • wordpress大學(xué)主題下載地址恩施seo整站優(yōu)化哪家好
  • 17一起做網(wǎng)站普寧站免費(fèi)推廣的方式
  • 懸停顯示 wordpress杭州seo關(guān)鍵詞優(yōu)化公司
  • 做電商網(wǎng)站一般需要什么流程谷歌seo是什么職業(yè)
  • 公司網(wǎng)站建設(shè)應(yīng)注意愛論壇
  • 網(wǎng)站開發(fā)需要用到的技術(shù)醴陵網(wǎng)站制作
  • 遼寧網(wǎng)站建設(shè)多少錢活動推廣文案
  • 廣告做圖網(wǎng)站廣州新聞發(fā)布
  • axure做的網(wǎng)站sem競價(jià)推廣怎么做
  • 做網(wǎng)站賭博的網(wǎng)站手機(jī)優(yōu)化
  • 蘭州網(wǎng)站seo費(fèi)用企業(yè)品牌推廣策劃方案
  • pHP可以做論壇網(wǎng)站嗎如何去除痘痘效果好
  • 電子商務(wù) 網(wǎng)站開發(fā)手機(jī)百度安裝下載
  • 鄭州官網(wǎng)網(wǎng)站推廣優(yōu)化公司品牌廣告和效果廣告的區(qū)別
  • 網(wǎng)站內(nèi)頁百度不收錄seo整站優(yōu)化公司持續(xù)監(jiān)控
  • 網(wǎng)站的聯(lián)系我們怎么做深圳外貿(mào)網(wǎng)絡(luò)推廣渠道
  • 谷歌seo優(yōu)化排名搜索網(wǎng)站排名優(yōu)化
  • 移動端網(wǎng)站建設(shè)費(fèi)用軟件開發(fā)
  • 網(wǎng)站改版seo建議百度推廣如何代理加盟
  • 網(wǎng)站網(wǎng)站建設(shè)設(shè)計(jì)seo推廣有哪些
  • 香港免費(fèi)域名seo網(wǎng)站優(yōu)化培訓(xùn)找哪些
  • web網(wǎng)站開發(fā)基本流程圖黃岡網(wǎng)站seo
  • 重慶忠縣網(wǎng)站建設(shè)公司哪家專業(yè)幽默廣告軟文案例
  • 做網(wǎng)站需要網(wǎng)絡(luò)服務(wù)器深圳網(wǎng)站建設(shè)專業(yè)樂云seo
  • 成都蜀美網(wǎng)站建設(shè)徐州網(wǎng)站建設(shè)
  • 美容院網(wǎng)站源碼seo搜索引擎優(yōu)化名詞解釋
  • 遼寧建設(shè)廳新網(wǎng)站個(gè)人免費(fèi)開發(fā)網(wǎng)站
  • 完善旅游網(wǎng)站的建設(shè)網(wǎng)站制作建設(shè)公司