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

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

javaee可以做網(wǎng)站么seo收錄排名

javaee可以做網(wǎng)站么,seo收錄排名,機(jī)關(guān)單位 網(wǎng)站建設(shè)方案策劃書,高端模板建站報(bào)價(jià)【Python學(xué)習(xí)筆記】調(diào)參工具Optuna&泰坦尼克號(hào)案例 背景前搖:(省流可不看) 最近找了份AI標(biāo)注師的實(shí)習(xí),但是全程都在做文本相關(guān)的活,本質(zhì)上還是擰螺絲,就想著學(xué)點(diǎn)調(diào)參、部署什么的技能增加一些競(jìng)爭(zhēng)力&a…

【Python學(xué)習(xí)筆記】調(diào)參工具Optuna&泰坦尼克號(hào)案例

背景前搖:(省流可不看)
最近找了份AI標(biāo)注師的實(shí)習(xí),但是全程都在做文本相關(guān)的活,本質(zhì)上還是擰螺絲,就想著學(xué)點(diǎn)調(diào)參、部署什么的技能增加一些競(jìng)爭(zhēng)力,以后簡(jiǎn)歷也好包裝。
當(dāng)然找教程首選B站大學(xué)了,果然讓我搜到了一個(gè)好評(píng)眾多的免費(fèi)調(diào)參工具Optuna。
另外順便提一句,我做的實(shí)習(xí)是內(nèi)容安全方向的文本標(biāo)注(人話:保證訓(xùn)練集的內(nèi)容是政治正確的),但我之前看別的視頻學(xué)習(xí)Yolo5做口罩和人臉識(shí)別的時(shí)候了解到有一款免費(fèi)的圖像標(biāo)注工具很好用,我自己親手測(cè)試過,安裝和使用都很便捷,而且沒有任何廣告和累贅,主打一個(gè)簡(jiǎn)潔高效。
工具名稱:LabelImg
導(dǎo)師之前分享的一篇公眾號(hào)文章介紹的很全面:
https://mp.weixin.qq.com/s/AE_rJwd9cKQkUGFGD6EfAg
公眾號(hào)傳送門
在這里插入圖片描述
————————————————————————————————————————————

正文:關(guān)于Optuna及學(xué)習(xí)過程
**視頻教程鏈接:**https://www.bilibili.com/list/watchlater?oid=832000670&bvid=BV1c34y1G7E8&spm_id_from=333.1007.top_right_bar_window_view_later.content.click
B站大神的視頻
在這里插入圖片描述
安裝方式:
在這里插入圖片描述
Anaconda應(yīng)該也可通過conda安裝,我這圖省事就直接按視頻里面那樣pip安裝了。
————————————————————————————————————————————

大神使用的Kaggle案例鏈接:
https://www.kaggle.com/code/yunsuxiaozi/learn-to-use-the-optuna/notebook
傳送門
在這里插入圖片描述
雖然復(fù)制粘貼很爽,但為了保持手感+感受細(xì)節(jié),建議有時(shí)間的還是慢慢手寫一遍,哪怕是照著敲,都比直接復(fù)制粘貼要好。初學(xué)一門技能的時(shí)候,慢就是快。
同樣,如果電腦上有Anaconda的話,建議建一個(gè)專門的虛擬環(huán)境來測(cè)試Optuna,防止出現(xiàn)沖突現(xiàn)象。
————————————————————————————————————————————

CSDN大神的conda虛擬環(huán)境搭建以及jupyter虛擬環(huán)境配置教程:
https://blog.csdn.net/fanstering/article/details/123459665
如果沒有Anaconda可以跳過此步驟

建立虛擬環(huán)境這一步我之前已經(jīng)很熟了,環(huán)境和Optuna包明明install裝好了,Jupyter一運(yùn)行還在報(bào)沒有Optuna這個(gè)庫,按照這位大神的教程裝了個(gè)nb_conda以后問題就解決了。
在這里插入圖片描述
在這里插入圖片描述
————————————————————————————————————————————

然后進(jìn)入熟悉的寫代碼環(huán)節(jié),首先導(dǎo)入需要的幾個(gè)Python庫,缺什么裝什么。pip install 或者conda install 都可,有Anaconda的建議后者。

如果他報(bào)了一個(gè)鬼迷日眼的錯(cuò)誤的話: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.read
zhebu在這里插入圖片描述

不要怕,只是需要把Jupyter升級(jí)一下。
在這里插入圖片描述
在這里插入圖片描述
我做完了前三步以后,重新刷新運(yùn)行這步程序就沒事了。
在這里插入圖片描述
————————————————————————————————
在這里插入圖片描述
數(shù)據(jù)集下載鏈接:https://www.kaggle.com/competitions/titanic/data?select=train.csv
傳送門
在這里插入圖片描述
在這里插入圖片描述

total_df['Embarked_is_nan']=(total_df['Embarked']!=total_df['Embarked'])

這行代碼建了一個(gè)新列 ‘Embarked_is_nan’,用于標(biāo)記 ‘Embarked’ 列中的空值(NaN)。如果 ‘Embarked’ 列中的元素不是它自己(即元素是 NaN),則新列的對(duì)應(yīng)位置將被設(shè)為 True。
這種寫法我還是第一次見。

keys=['Pclass','Sex','SibSp','Parch']
for key in keys:values=np.unique(train_df[key].values)if len(values)<10 and key!="Survived":print(f"key:{key},values:{values}") key_target=train_df['Survived'].groupby([train_df[key]]).mean()keys=key_target.keys().valuestarget=key_target.valueskey_target=pd.DataFrame({key:keys,key+"_target":target})total_df=pd.merge(total_df,key_target,on=key,how="left")
total_df.head()

這一段代碼有點(diǎn)復(fù)雜,首先篩選了四個(gè)重要特征[‘Pclass’,‘Sex’,‘SibSp’,‘Parch’],存儲(chǔ)在keys列表里,這些列被認(rèn)為可能與乘客的生存情況有關(guān)。
然后逐個(gè)遍歷該列表,看看每個(gè)特征在訓(xùn)練集里的數(shù)量有多少不重復(fù)的值values。
如果某個(gè)關(guān)鍵列的唯一值數(shù)量len(values)少于10個(gè),代碼會(huì)進(jìn)一步分析這個(gè)列與生存情況的關(guān)系。
(我有點(diǎn)疑惑的是為什么要強(qiáng)調(diào) key!=“Survived”,這個(gè)keys列表里本來也沒有“Survived”這個(gè)取值啊??)
打印出來發(fā)現(xiàn)四個(gè)屬性都滿足條件:
在這里插入圖片描述

key_target=train_df['Survived'].groupby([train_df[key]]).mean()

這一步在訓(xùn)練集train_df當(dāng)中,代碼計(jì)算了keys這個(gè)列表中,每個(gè)唯一值對(duì)應(yīng)的’Survived’列的平均生存率。
在這里插入圖片描述
由圖可見,key_target這個(gè)dataframe的值每次循環(huán)都隨著關(guān)鍵屬性的值變化,比如在處理到key = Pclass的時(shí)候,key_target的鍵就是1,2,3,值就是對(duì)應(yīng)的平均生存率;處理到key = sex的時(shí)候,key_target的鍵是‘Female’和‘Male’,值同樣是對(duì)應(yīng)的平均生存率。
后續(xù)的步驟有一些復(fù)雜,畫個(gè)word表格配合理解一下:
keys里面一共四個(gè)屬性,每次就拿其中一個(gè)來說事,最后把四個(gè)屬性的數(shù)據(jù)都存在total_df里面匯總并返回。
這是拿PClass說事的情況,PClass有三個(gè)值:1/2/3,針對(duì)每個(gè)值計(jì)算了平均存活率,并保存在key_target中。
然后取出了key_target的鍵存在keys列表(是的沒錯(cuò)這個(gè)列表也叫keys……,但此時(shí)里面的值應(yīng)該是PClass的1/2/3這三個(gè)取值)里面,值存在target列表里面(即0.629630,0.472826,0.242363這三個(gè)數(shù)字),然后人為給鍵和值這兩列取名字,鍵這一列還叫PClass,值這一列比較有個(gè)性,要叫‘PClass_target’。
在這里插入圖片描述
以此類推,后面三個(gè)屬性的key_target都是這套路,但是total_df這張表一直在擴(kuò)大。
在這里插入圖片描述
(male這里是word超界,圖截掉了,后面單獨(dú)補(bǔ)了一塊)
直到最后total_df變?yōu)橐粡埓蟊?#xff1a;
在這里插入圖片描述
說實(shí)話,對(duì)于一個(gè)主要目的是教人怎么使用調(diào)參工具的Optuna案例來說,原作者這一步寫的邏輯真的很給我增加了理解負(fù)擔(dān)……
我讓Kimi把這段代碼改寫成了一個(gè)更加清晰簡(jiǎn)單的版本,這樣不容易混淆這么多滿屏的key和target:
在這里插入圖片描述
這部分不是調(diào)參步驟的重點(diǎn),如果實(shí)在搞不明白可以跳過?!?br /> 使用平均值填充缺失值,這學(xué)到的數(shù)據(jù)處理常見步驟,標(biāo)記一下。
在這里插入圖片描述
補(bǔ)充:之前上數(shù)據(jù)分析與Tableau可視化這門課的時(shí)候,老師分享的一個(gè)帖子專門介紹了很多數(shù)據(jù)缺失的類型和處理方法:https://towardsdatascience.com/all-about-missing-data-handling-b94b8b5d2184
添加鏈接描述
帖子是全英文,需要注冊(cè)登錄一下觀看。
————————————————————————————————————————————
有了屬性更多更全面的數(shù)據(jù)集total_df以后,按照之前的長度再劃分回訓(xùn)練集和測(cè)試集。
在這里插入圖片描述
————————————————————————————————————————————
在這里插入圖片描述
這里提到訓(xùn)練集和測(cè)試集的比例為8:2,即4:1,是一個(gè)很常見的劃分比例。
原作者這里應(yīng)該是把test和valid看作一個(gè)東西,所以命名沒有特別刻意區(qū)分。
在這里插入圖片描述
但實(shí)際上這兩個(gè)概念并不是完全一樣(但我看到有時(shí)候確實(shí)區(qū)分得不嚴(yán)格),這里我統(tǒng)一采用了全是test_X和test_y的寫法。
在這里插入圖片描述
在這里插入圖片描述
————————————————————————————————————————————
導(dǎo)入LGBM回歸器,雖然泰坦尼克號(hào)數(shù)據(jù)集用于分類問題(預(yù)測(cè)一位乘客能否生還)較多,但原作者在這里把他視作回歸問題處理。我考慮到作為入門來說,選擇數(shù)據(jù)集簡(jiǎn)單熟悉、有視頻解說的教程容易上手一些,所以沒有糾結(jié)回歸還是分類問題的細(xì)節(jié)。后續(xù)熟練了流程的話可以網(wǎng)上找更多復(fù)雜和規(guī)范的數(shù)據(jù)來練習(xí)。
補(bǔ)充學(xué)習(xí)鏈接:《LGBMRegressor 參數(shù)設(shè)置 lgbmclassifier參數(shù)》
https://blog.51cto.com/u_12219/10333606
添加鏈接描述
(話說這帖子里不是有LGBM分類器么,為什么作者在視頻里要專門提到當(dāng)回歸問題處理呢?)
————————————————————————————————————————————
RMSE作為損失函數(shù),即評(píng)估指標(biāo),是**計(jì)算均方根誤差(Root Mean Square Error)**的Python函數(shù),越小越好。
在這里插入圖片描述
————————————————————————————————————————————
根據(jù)原作者視頻的講解設(shè)置任務(wù)objective的參數(shù):
具體參數(shù)名稱、含義、建議值可以參考上面那個(gè)《LGBMRegressor 參數(shù)設(shè)置 lgbmclassifier參數(shù)》補(bǔ)充學(xué)習(xí)貼。

def objective(trial):param = {'metric':'rmse','random_state':trial.suggest_int('random_state', 2023, 2023),  #隨機(jī)種子固定,所以設(shè)置為2023-2023'n_estimators':trial.suggest_int('n_estimators', 50, 300),  #迭代器數(shù)量 50-300 的整數(shù)'reg_alpha':trial.suggest_loguniform('reg_alpha', 1e-3, 10.0),'reg_lambda':trial.suggest_loguniform('reg_lambda', 1e-3, 10.0),  #對(duì)數(shù)正態(tài)分布的建議值'colsample_bytree':trial.suggest_float('colsample_bytree', 0.5, 1), #浮點(diǎn)數(shù)'subsample':trial.suggest_float('subsample', 0.5, 1),'learning_rate':trial.suggest_float('learning_rate', 1e-4, 0.1, log = True),'num_leaves':trial.suggest_int('num_leaves', 8, 64),  #整數(shù)'min_child_samples':trial.suggest_int('min_child_smaples', 1, 100),        }model = LGBMRegressor(**param)  #調(diào)用模型model.fit(train_X, train_y, eval_set = [(test_X, test_y)], early_stopping_rounds = 100, verbose = False)  #擬合preds = model.predict(test_X)  #計(jì)算測(cè)試集的損失rmse = RMSE(test_y, preds)return rmse

————————————————————————————————————————————
關(guān)鍵代碼:調(diào)用Optuna,創(chuàng)建一個(gè)學(xué)習(xí)任務(wù),指定讓損失最小,設(shè)置任務(wù)名稱:

#創(chuàng)建的研究命名,找最小值
study = optuna.create_study(direction = 'minimize', study_name = 'Optimize boosting hpyerparameters')  #創(chuàng)建了一個(gè)Optuna研究對(duì)象,用于優(yōu)化超參數(shù)。
#關(guān)鍵代碼:調(diào)用Optuna,創(chuàng)建一個(gè)學(xué)習(xí)任務(wù),指定讓損失最小,設(shè)置任務(wù)名稱。
#目標(biāo)函數(shù),嘗試的次數(shù)
study.optimize(objective, n_trials = 100) #將設(shè)定好參數(shù)的object任務(wù)傳進(jìn)來,嘗試一百次
#輸出最佳的參數(shù)
print('Best Trial: ',study.best_trial.params) #找到最佳參數(shù)  tudy.best_trial 表示在所有嘗試中損失最小的那次試驗(yàn),params 是一個(gè)字典,包含了那次試驗(yàn)中使用的超參數(shù)。
lgbm_params = study.best_trial.params #這行代碼將最佳參數(shù)賦值給 lgbm_params 變量。這樣可以將這些參數(shù)用于LightGBM模型或其他需要這些超參數(shù)的模型。

在這里插入圖片描述
————————————————————————————————————————————
思路沒問題,但我們遇到一個(gè)奇怪的報(bào)錯(cuò):fit() got an unexpected keyword argument ‘early_stopping_rounds’:
在這里插入圖片描述
Kimi的方法試了還是報(bào)錯(cuò),所以,多半又不是該我們背鍋。在這里插入圖片描述
在這里插入圖片描述
StackFlow的大神們提供了兩個(gè)解決方案:
https://stackoverflow.com/questions/76895269/lgbmclassifier-fit-got-an-unexpected-keyword-argument-early-stopping-rounds

傳送門
在這里插入圖片描述
在這里插入圖片描述
注意最好用pip install的方式,conda install好像裝不上。
在這里插入圖片描述
但我發(fā)現(xiàn)并沒有什么用……還是報(bào)一樣的錯(cuò)誤,不認(rèn)識(shí)early_stopping_rounds,甚至刪掉以后還不認(rèn)識(shí)后面一個(gè)參數(shù)verbose……
按照前面那個(gè)補(bǔ)充的參數(shù)帖子改也不行,看來這信息更新有億點(diǎn)點(diǎn)滯后啊……
在這里插入圖片描述
在這里插入圖片描述

————————————————————————————————————————————
順便搜的過程中還發(fā)現(xiàn)一個(gè)易錯(cuò)點(diǎn):這個(gè)early_stopping_rounds好像最大也只能頂?shù)?00。
https://blog.csdn.net/YangTinTin/article/details/120708391
傳送門
在這里插入圖片描述
————————————————————————————————————————————
我在網(wǎng)上手動(dòng)搜了一圈加上詢問Kimi,暫時(shí)還沒有找到很有效的替代方案。鑒于我們主要是希望嘗試一下Optuna的使用過程,所以先把這倆惹麻煩的參數(shù)刪去。

model.fit(train_X, train_y, eval_set=[(test_X, test_y)])  #擬合

完整objective代碼:

def objective(trial):param = {'metric':'rmse','random_state':trial.suggest_int('random_state', 2023, 2023),  #隨機(jī)種子固定,所以設(shè)置為2023-2023'n_estimators':trial.suggest_int('n_estimators', 50, 300),  #迭代器數(shù)量 50-300 的整數(shù)'reg_alpha':trial.suggest_loguniform('reg_alpha', 1e-3, 10.0),'reg_lambda':trial.suggest_loguniform('reg_lambda', 1e-3, 10.0),  #對(duì)數(shù)正態(tài)分布的建議值'colsample_bytree':trial.suggest_float('colsample_bytree', 0.5, 1), #浮點(diǎn)數(shù)'subsample':trial.suggest_float('subsample', 0.5, 1),'learning_rate':trial.suggest_float('learning_rate', 1e-4, 0.1, log = True),'num_leaves':trial.suggest_int('num_leaves', 8, 64),  #整數(shù)'min_child_samples':trial.suggest_int('min_child_smaples', 1, 100),        }model = LGBMRegressor(**param)  #調(diào)用模型model.fit(train_X, train_y, eval_set=[(test_X, test_y)])  #擬合preds = model.predict(test_X)  #計(jì)算測(cè)試集的損失rmse = RMSE(test_y, preds)return rmse

然后就可以得到Best_Trial了:
在這里插入圖片描述
————————————————————————————————————————————
類似的,原UP還用了xgboost和catboost類似方法來找最佳參數(shù)。
不難看出,三個(gè)不同的方法主要區(qū)別是選用的參數(shù)param,以及model指定的函數(shù)方法。
XGBoost:
在這里插入圖片描述
在這里插入圖片描述
XGBoost結(jié)果
在這里插入圖片描述
————————————————————————————————————————————
CatBoost:
在這里插入圖片描述
在這里插入圖片描述
CatBoost結(jié)果:
在這里插入圖片描述
————————————————————————————————————————————
最后使用K折交叉驗(yàn)證得到最佳結(jié)果:
交叉驗(yàn)證也是個(gè)機(jī)器學(xué)習(xí)常用詞。
在這里插入圖片描述

def accuracy(y_true, y_pred):return np.sum(y_true == y_pred)/len(y_true)

在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述

在這里插入圖片描述
kf 是一個(gè) KFold 對(duì)象,它是 scikit-learn 庫中用于實(shí)現(xiàn) K 折交叉驗(yàn)證的工具。KFold 將數(shù)據(jù)集分成 n_splits 個(gè)子集,每個(gè)子集輪流作為驗(yàn)證集,其余的作為訓(xùn)練集。
for train_index, valid_index in kf.split(x): 這行代碼會(huì)迭代 KFold 對(duì)象,每次迭代返回兩個(gè)數(shù)組:train_index 和 valid_index。train_index 包含了用于訓(xùn)練的數(shù)據(jù)點(diǎn)的索引,而 valid_index 包含了用于驗(yàn)證的數(shù)據(jù)點(diǎn)的索引。根據(jù)索引到全集X,y里面就能取到每一次的訓(xùn)練集和驗(yàn)證集數(shù)據(jù),這個(gè)過程好比全班打亂,每次隨機(jī)抽學(xué)號(hào)喊幾個(gè)同學(xué)一組。
————————————————————————————————————————————
現(xiàn)在又遇到一個(gè)常見bug,雖然我不太知道這是怎么產(chǎn)生的,不知道是不是又該P(yáng)ython背鍋。(因?yàn)橹癤,y數(shù)據(jù)集的shape和作者是一模一樣的,后面按道理也沒有另外對(duì)他們做什么操作……)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
遇到問題不要怕,改!這把要相信Kimi!(順便一提,我實(shí)習(xí)的這家做人工智能的公司員工他們自己也用的Kimi,所以Kimi還是比較可信的,而且還免費(fèi)!!)
在這里插入圖片描述
別忘了同時(shí)把early_stopping_rounds和verbose這倆參數(shù)斃了,免得又惹出報(bào)錯(cuò)。
在這里插入圖片描述
這一塊代碼比較長,重復(fù)差不多的地方有點(diǎn)多,注意不要寫漏寫錯(cuò)了。

from sklearn.model_selection import KFold  #在機(jī)器學(xué)習(xí)庫中導(dǎo)入k折交叉驗(yàn)證的函數(shù)
from xgboost import XGBRegressor
from lightgbm import  LGBMRegressor
from catboost import CatBoostRegressor  def accuracy(y_true,y_pred):return np.sum(y_true==y_pred)/len(y_true)
print("start fit.")
folds = 10  #將數(shù)據(jù)分成10份
y=train_df['Survived']
X=train_df.drop(['Survived'],axis=1)train_accuracy=[]
valid_accuracy=[]
# 存儲(chǔ)已學(xué)習(xí)模型的列表
models = []#將數(shù)據(jù)集隨機(jī)打亂,并分成folds份
kf = KFold(n_splits=folds, shuffle=True, random_state=2023) #從x_train中按照9:1的比例分成訓(xùn)練集和驗(yàn)證集,并取出下標(biāo)
for train_index, valid_index in kf.split(X):#根據(jù)下標(biāo)取出訓(xùn)練集和驗(yàn)證集的數(shù)據(jù)x_train_cv = X.iloc[train_index]y_train_cv = y.iloc[train_index]x_valid_cv =X.iloc[valid_index]y_valid_cv = y.iloc[valid_index]model = LGBMRegressor(**lgbm_params)#模型用x_train_cv去訓(xùn)練,用x_train_cv和x_valid_cv一起去評(píng)估model.fit(x_train_cv, y_train_cv, eval_set = [(x_train_cv, y_train_cv), (x_valid_cv, y_valid_cv)], #early_stopping_rounds=100,#verbose = 100, #迭代100次輸出一個(gè)結(jié)果)#對(duì)訓(xùn)練集進(jìn)行預(yù)測(cè)y_pred_train = model.predict(x_train_cv)        #對(duì)驗(yàn)證集進(jìn)行預(yù)測(cè)y_pred_valid = model.predict(x_valid_cv) y_pred_train=(y_pred_train>=0.5)y_pred_valid=(y_pred_valid>=0.5)train_acc=accuracy(y_pred_train,y_train_cv)valid_acc=accuracy(y_pred_valid,y_valid_cv)train_accuracy.append(train_acc)valid_accuracy.append(valid_acc)#將model保存進(jìn)列表中models.append(model)model = XGBRegressor(**xgb_params)#模型用x_train_cv去訓(xùn)練,用x_train_cv和x_valid_cv一起去評(píng)估model.fit(x_train_cv, y_train_cv, eval_set = [(x_train_cv, y_train_cv), (x_valid_cv, y_valid_cv)], #early_stopping_rounds=100,#verbose = 100, #迭代100次輸出一個(gè)結(jié)果)#對(duì)訓(xùn)練集進(jìn)行預(yù)測(cè)y_pred_train = model.predict(x_train_cv)        #對(duì)驗(yàn)證集進(jìn)行預(yù)測(cè)y_pred_valid = model.predict(x_valid_cv) y_pred_train=(y_pred_train>=0.5)y_pred_valid=(y_pred_valid>=0.5)train_acc=accuracy(y_pred_train,y_train_cv)valid_acc=accuracy(y_pred_valid,y_valid_cv)train_accuracy.append(train_acc)valid_accuracy.append(valid_acc)#將model保存進(jìn)列表中models.append(model) model = CatBoostRegressor(**cat_params)#模型用x_train_cv去訓(xùn)練,用x_train_cv和x_valid_cv一起去評(píng)估model.fit(x_train_cv, y_train_cv, eval_set = [(x_train_cv, y_train_cv), (x_valid_cv, y_valid_cv)], #early_stopping_rounds=100,#verbose = 100, #迭代100次輸出一個(gè)結(jié)果)#對(duì)訓(xùn)練集進(jìn)行預(yù)測(cè)y_pred_train = model.predict(x_train_cv)        #對(duì)驗(yàn)證集進(jìn)行預(yù)測(cè)y_pred_valid = model.predict(x_valid_cv) y_pred_train=(y_pred_train>=0.5)y_pred_valid=(y_pred_valid>=0.5)train_acc=accuracy(y_pred_train,y_train_cv)valid_acc=accuracy(y_pred_valid,y_valid_cv)train_accuracy.append(train_acc)valid_accuracy.append(valid_acc)#將model保存進(jìn)列表中models.append(model) print(f"train_accuracy:{train_accuracy}, valid_accuracy:{valid_accuracy}")train_accuracy=np.array(train_accuracy)
valid_accuracy=np.array(valid_accuracy)print(f"mean_train_accuracy: {np.mean(train_accuracy)}")
print(f"mean_valid_accuracy: {np.mean(valid_accuracy)}")

我跟原作者的中間輸出有些不一樣,不知道差距是什么造成的:
在這里插入圖片描述
在這里插入圖片描述
不過好在目前看來,結(jié)果還不算太差:
在這里插入圖片描述
在這里插入圖片描述
————————————————————————————————————————————
在測(cè)試集上測(cè)試每個(gè)模型的效果:

test_X = test_df.drop(['Survived'], axis = 1).valuespreds_test = []#用每個(gè)保存的模型都對(duì)x_test預(yù)測(cè)一次,然后取平均值
for model in models:pred = model.predict(test_X)preds_test.append(pred)
#將預(yù)測(cè)結(jié)果轉(zhuǎn)換為np.array
preds_test_np = np.array(preds_test)#按行對(duì)每個(gè)模型的預(yù)測(cè)結(jié)果取平均值
test_pred= preds_test_np.mean(axis = 0 )
test_pred=(test_pred >= 0.5).astype(np.int64) 
#平均預(yù)測(cè)值與 0.5 進(jìn)行比較,根據(jù)比較結(jié)果(大于等于 0.5 為 True,否則為 False)將每個(gè)值轉(zhuǎn)換為二進(jìn)制形式(即 1 或 0),然后使用 astype(np.int64) 將布爾值轉(zhuǎn)換為 64 位整數(shù)類型。
test_pred

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
看輸出的test_pred.shape,不要看這個(gè)array長得四四方方的,看他shape還是個(gè)一維數(shù)組,擁有 418 個(gè)元素。
在 Python 中,一維數(shù)組的形狀通常表示為 (N,),其中 N 是數(shù)組中的元素總數(shù)。
————————————————————————————————————————————
像test_pred=(test_pred >= 0.5).astype(np.int64) 這句用到的一樣,創(chuàng)建新列并且通過比較大小來賦Bool值是True還是False的例子,在這個(gè)項(xiàng)目里還有很多:
在這里插入圖片描述
在這里插入圖片描述
————————————————————————————————————————————
最后保存并寫入CSV文件:

submission=pd.read_csv("D:/StudyFiles/Optuna_Titanic/data/gender_submission.csv")  #讀取CSV文件,并將其存儲(chǔ)在變量submission中
submission['Survived']=test_pred  #更新了submission DataFrame中的'Survived'列,使其包含模型預(yù)測(cè)的生存概率或分類結(jié)果。
submission.to_csv("submission.csv",index=None) #將更新后的submission DataFrame保存為一個(gè)新的CSV文件"submission.csv"。參數(shù)index=None表示在保存CSV文件時(shí)不包括行索引。
submission.head()

在這里插入圖片描述
————————————————————————————————————————————
我會(huì)把我的代碼包發(fā)到CSDN主頁,有需要的朋友歡迎自行下載,那我們下一個(gè)教程再見吧。
在這里插入圖片描述
————————————————————————————————————————————
其他相關(guān)的學(xué)習(xí)內(nèi)容:
(一)**9.1 模型調(diào)參【斯坦福21秋季:實(shí)用機(jī)器學(xué)習(xí)中文版】:**李沐老師的視頻,介紹了一些關(guān)于調(diào)參的理論,不了解調(diào)參的可以看看學(xué)習(xí)一下基礎(chǔ)知識(shí)。
https://www.bilibili.com/video/BV1vQ4y1e7LF/?spm_id_from=333.788.recommend_more_video.1&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
傳送門
(二)這個(gè)自動(dòng)調(diào)參神器簡(jiǎn)直是太強(qiáng)了!能完全滿足機(jī)器學(xué)習(xí)和深度學(xué)習(xí)調(diào)參日常使用!初學(xué)者必備工具!:視頻內(nèi)容不如我跟的這個(gè)示范視頻,主要就是簡(jiǎn)單講了一下Optuna,沒有實(shí)操案例。
https://www.bilibili.com/video/BV1Zs421K7Qj/?spm_id_from=333.788.recommend_more_video.6&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
傳送門
不過我對(duì)這位UP介紹的這本書很感興趣,因?yàn)閷?duì)于我這種缺乏經(jīng)驗(yàn)又喜歡找規(guī)律的小白來說,很希望能有一本指導(dǎo)手冊(cè)給我介紹一些萬能公式和方向。

http://www.risenshineclean.com/news/29314.html

相關(guān)文章:

  • 網(wǎng)站管理有哪些成人英語培訓(xùn)
  • 新冠病毒的最新動(dòng)態(tài)廣州seo網(wǎng)站公司
  • 一級(jí)造價(jià)師注冊(cè)查詢系統(tǒng)平臺(tái)入口求職seo推薦
  • 自建網(wǎng)站 做自定義導(dǎo)航小廣告網(wǎng)站
  • 網(wǎng)站建設(shè)方案書騰訊云搜資源
  • 電子畢業(yè)設(shè)計(jì)代做網(wǎng)站網(wǎng)絡(luò)銷售渠道有哪些
  • 了解網(wǎng)站開發(fā) 后臺(tái)流程廣告公司經(jīng)營范圍
  • 東莞做網(wǎng)站企業(yè)銘餐飲營銷案例100例
  • 公司網(wǎng)站建設(shè)會(huì)議紀(jì)要網(wǎng)站seo優(yōu)化教程
  • 小學(xué)學(xué)校網(wǎng)站模板免費(fèi)下載蘇州網(wǎng)站建設(shè)開發(fā)公司
  • 不會(huì)編程 做網(wǎng)站chinaz站長素材
  • 免費(fèi)企業(yè)網(wǎng)站模板下載剛剛中國突然宣布
  • 醫(yī)療整形網(wǎng)站怎么做廣州seo排名優(yōu)化服務(wù)
  • c2c網(wǎng)站頁面設(shè)計(jì)特點(diǎn)企業(yè)網(wǎng)站seo點(diǎn)擊軟件
  • 做網(wǎng)站設(shè)計(jì)怎么進(jìn)企業(yè)漯河網(wǎng)站推廣公司
  • 網(wǎng)站查詢域名解析ip深圳網(wǎng)絡(luò)推廣培訓(xùn)學(xué)校
  • 華升建設(shè)集團(tuán)公司網(wǎng)站免費(fèi)建一個(gè)自己的網(wǎng)站
  • 最好的網(wǎng)站建設(shè)價(jià)格上海b2b網(wǎng)絡(luò)推廣外包
  • 淘寶網(wǎng)站頁面設(shè)計(jì)找廣告商的平臺(tái)
  • plone cms Wordpress拼多多seo怎么優(yōu)化
  • 做網(wǎng)站買了域名之后關(guān)鍵詞在線優(yōu)化
  • 安卓一鍵制作app軟件長春網(wǎng)站優(yōu)化
  • 自己做的網(wǎng)站在瀏覽器上顯示不安全簡(jiǎn)述seo和sem的區(qū)別與聯(lián)系
  • 東莞哪里有做企業(yè)網(wǎng)站的安卓優(yōu)化大師app下載
  • 劉濤給孩子網(wǎng)站做的廣告惠州seo網(wǎng)站排名
  • 淄博網(wǎng)站推廣公司大連seo建站
  • 2021年軍事新聞?wù)緝?yōu)化多少錢
  • 做網(wǎng)站維護(hù)費(fèi)是怎么算的免費(fèi)刷網(wǎng)站百度關(guān)鍵詞
  • 長春長春網(wǎng)站建設(shè)2023年7 8月十大新聞
  • 煙臺(tái)電子商務(wù)網(wǎng)站自媒體135網(wǎng)站免費(fèi)下載安裝