2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
पृष्ठभूमिकम्पः : १.(धनं रक्षितुम् इच्छसि चेत् मा पठतु)
मया अद्यैव ए.आइ resume भविष्ये पैकेज् कर्तुं सुकरं भविष्यति।
अवश्यं, पाठ्यक्रमस्य प्रथमः विकल्पः बिलिबिली विश्वविद्यालयः अस्ति यथा अपेक्षितं, मया एकं निःशुल्कं पैरामीटर् समायोजनसाधनं प्राप्तम् यत् अनेकानि सकारात्मकानि समीक्षाणि प्राप्तवन्तः।ओप्तुना。
वैसे, मया कृता इण्टर्न्शिप् आसीत्सामग्रीसुरक्षादिशायाः कृते पाठटिप्पणी(मानववाक्यम् : प्रशिक्षणसमूहस्य सामग्री अस्ति इति सुनिश्चितं कुर्वन्तुराजनैतिक समीचीनता), परन्तु यदा अहं मास्कस्य मुखपरिचयस्य च कृते Yolo5 इत्यस्य उपयोगः कथं करणीयः इति ज्ञातुं अन्येषां भिडियानां दर्शनं कृतवान् तदा अहं ज्ञातवान् यत् निःशुल्कम् अस्तिबिम्ब एनोटेशनसाधनं मया स्वयमेव परीक्षितम् अस्ति यत् अस्य स्थापनायाः उपयोगः च अतीव सुलभः अस्ति।
साधनस्य नाम : १.लेबलइम्ग्
पूर्वं प्रशिक्षकेन साझाकृतः सार्वजनिकलेखालेखः अतीव व्यापकं परिचयं दत्तवान् यत् -
https://mp.weixin.qq.com/s/AE_rJwd9cKQkUGFGD6EfAg
सार्वजनिक खाता पोर्टल
————————————————————————————————————————————
पाठः- ओप्टुनायाः विषये शिक्षणप्रक्रियायाः विषये च
**वीडियो ट्यूटोरियल लिङ्क: **https://www.bilibili.com/list/watchlater?oid=832000670&bvid=BV1c34y1G7E8&spm_id_from=333.1007.top_right_bar_window_view_later.content.click
स्टेशन बी मास्टर्स् इत्यस्य विडियो
संस्थापनविधिः : १.
Anaconda इत्येतत् conda इत्यस्य माध्यमेन अपि स्थापनीयम् अहं केवलं pip मार्गेण संस्थापितवान् यथा विडियो मध्ये दर्शितं यत् कष्टं रक्षितुं शक्यते।
————————————————————————————————————————————
स्वामीभिः प्रयुक्तः Kaggle case link:
https://www.kaggle.com/code/yunsuxiaozi/ओप्टुना/नोटबुकस्य-उपयोगं-शिक्षन्तु
पोर्टल
यद्यपि प्रतिलिपिकरणं पेस्ट् च मजेयम्, तथापि भावः निर्वाहयितुम्, विवरणं च अनुभूयते चेत्, तदनुसारं टङ्कयित्वा अपि शनैः शनैः लिखितव्यम् इति अनुशंसितम् प्रत्यक्षं चिनोति । यदा प्रथमवारं कौशलं शिक्षसि तदा मन्दं द्रुतं भवति।
तथैव यदि भवतां सङ्गणके Anaconda अस्ति तर्हि विग्रहं निवारयितुं Optuna इत्यस्य परीक्षणार्थं विशेषं वर्चुअल् वातावरणं निर्मातुं शक्यते ।
————————————————————————————————————————————
CSDN master’s conda आभासी वातावरणनिर्माणं तथा jupyter आभासी वातावरणविन्यासपाठ्यक्रमाः:
https://blog.csdn.net/fanstering/लेख/विवरण/123459665
यदि भवतां समीपे Anaconda नास्ति तर्हि भवान् एतत् पदं त्यक्तुम् अर्हति
अहं पूर्वमेव वर्चुअल् वातावरणस्य स्थापनायाः एतत् पदं परिचितः अस्मि तथापि यदा Jupyter चालितं भवति तदा अपि अस्य विशेषज्ञस्य पाठ्यक्रमानुसारं Optuna पुस्तकालयः नास्ति इति निवेदयति ।नब_कोण्डासमस्यायाः समाधानं पश्चात् भविष्यति।
————————————————————————————————————————————
ततः कोड् लेखनस्य परिचितं प्रक्रियां प्रविशन्तु प्रथमं आवश्यकानि पायथन् पुस्तकालयाः आयातयन्तु तथा च यत्किमपि अनुपलब्धं तत् संस्थापयन्तु । पिप् इन्स्टॉल तथा कोण्डा इन्स्टॉल इत्येतौ द्वौ अपि स्वीकार्यौ स्तः ।
यदि सः भूतदोषं निवेदयति तर्हि : १. TqdmWarning: IProgress न प्राप्तम्। कृपया jupyter तथा ipywidgets अपडेट करें। https://ipywidgets.read इति पश्यन्तु
झेबु
मा भयम्, भवद्भिः केवलं Jupyter इत्यस्य उन्नयनं करणीयम् ।
प्रथमत्रयपदं सम्पन्नं कृत्वा अहं ताजगीं कृत्वा कार्यक्रमस्य एतत् पदं चालितवान् सर्वं सुष्ठु आसीत्।
————————————————————————————————
डाटा सेट् डाउनलोड् लिङ्क्: https://www.kaggle.com/competitions/titanic/data?select=train.csv
पोर्टल
total_df['Embarked_is_nan']=(total_df['Embarked']!=total_df['Embarked'])
एषा कोडपङ्क्तिः 'Embarked_is_nan' इति नूतनं स्तम्भं निर्माति, यस्य उपयोगः 'Embarked' स्तम्भे शून्यमूल्यानि (NaN) चिह्नितुं भवति । यदि 'Embarked' स्तम्भे तत्त्वं स्वयं नास्ति (अर्थात् तत्त्वं NaN अस्ति), तर्हि नूतनस्तम्भे तत्सम्बद्धं स्थानं 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().values
target=key_target.values
key_target=pd.DataFrame({key:keys,key+"_target":target})
total_df=pd.merge(total_df,key_target,on=key,how="left")
total_df.head()
इदं कोडस्य भागं किञ्चित् जटिलं भवति यत् प्रथमं चत्वारि महत्त्वपूर्णानि विशेषतानि ['Pclass', 'Sex', 'SibSp', 'Parch'] फ़िल्टर करोति तथा च तान् कीलसूचौ संगृह्णाति एते स्तम्भाः सम्भाव्यतया सम्बद्धाः इति मन्यन्ते यात्रिकाणां जीवितस्य स्थितिः।
ततः एकैकं सूचीं पुनरावृत्तिं कुर्वन्तु यत् प्रशिक्षणसमूहे प्रत्येकस्य विशेषतायाः कृते कति अद्वितीयमूल्यानि सन्ति इति पश्यन्तु ।
यदि कस्यचित् कीलस्तम्भस्य अद्वितीयमूल्यानां len (मूल्यानां) संख्या १० तः न्यूना भवति तर्हि कोडः अस्य स्तम्भस्य जीवितस्य स्थितिः च सम्बन्धस्य अधिकं विश्लेषणं करिष्यति
(I’m a little confused about why key!= “Survived” इत्यस्य उपरि बलं दत्तम् अस्ति। अस्मिन् कीलसूचौ “Survived” इत्यस्य मूल्यं नास्ति??)
तत् मुद्रयित्वा चत्वारः अपि विशेषताः शर्ताः पूरयन्ति इति ज्ञातव्यम् ।
key_target=train_df['Survived'].groupby([train_df[key]]).mean()
अस्मिन् चरणे, प्रशिक्षणसेट् train_df इत्यस्मिन्, कोडः कुञ्जीसूचौ प्रत्येकस्य अद्वितीयमूल्येन अनुरूपं 'Survived' स्तम्भस्य औसतजीवनदरस्य गणनां करोति ।
यथा चित्रात् दृश्यते, key_target dataframe इत्यस्य मूल्यं प्रत्येकस्मिन् चक्रे key attribute इत्यस्य मूल्येन सह परिवर्तते उदाहरणार्थं यदा key = Pclass इत्यस्य प्रक्रिया भवति तदा key_target इत्यस्य कीलानि 1, 2, 3 च भवन्ति value is the corresponding average survival rate when key = sex, key_target इत्यस्य कुञ्जिकाः 'महिला' तथा 'पुरुष' भवन्ति, मूल्यानि च तत्सम्बद्धानि औसतजीवनदराणि अपि सन्ति
तदनन्तरं पदानि किञ्चित् जटिलानि सन्ति तत् अवगन्तुं शब्दसारणीं आकर्षयन्तु ।
कुञ्जीषु कुलम् चत्वारि विशेषताः सन्ति ।
एतत् PClass इत्यस्य प्रकरणम् अस्ति PClass इत्यस्य त्रीणि मूल्यानि सन्ति: 1/2/3 प्रत्येकस्य मूल्यस्य कृते औसतजीवनदरः गण्यते तथा च key_target इत्यत्र संगृहीतः भवति ।
ततः key_target इत्यस्य कीलानि बहिः निष्कास्य कीलसूचौ संगृह्यन्ते (आम्, एषा सूची keys... इति अपि उच्यते, परन्तु अस्मिन् समये तस्मिन् मूल्यानि त्रयः मूल्यानि भवेयुः 1/ PClass इत्यस्य 2/3), तथा च मूल्यानि लक्ष्यसूचौ (अर्थात् 0.629630, 0.472826, 0.242363 इति त्रयः सङ्ख्याः) संगृहीताः भवन्ति, ततः कृत्रिमरूपेण कीलस्य मूल्यस्य च स्तम्भद्वयस्य नामकरणं भवति PClass इति अपि उच्यते, मूल्यस्तम्भः अधिकं व्यक्तिगतः अस्ति, अतः 'PClass_target' इति उच्यते ।
उपमेन, अग्रिमत्रयगुणानां key_target सर्वे अस्मिन् दिनचर्यायां सन्ति, परन्तु total_df सारणी निरन्तरं विस्तारिता अस्ति ।
(पुरुषः अत्र शब्दः सीमातः बहिः, चित्रं छिन्नं, पश्चात् पृथक् खण्डः योजितः)
यावत् अन्ते total_df एकं विशालं सारणी न भवति:
सत्यं वक्तुं शक्यते यत्, एकस्य Optuna प्रकरणस्य कृते यस्य मुख्यं उद्देश्यं जनान् पैरामीटर् समायोजनसाधनस्य उपयोगं कथं कर्तव्यमिति शिक्षितुं भवति, अस्मिन् चरणे मूललेखकेन लिखितः तर्कः वास्तवतः मम कृते अवगमनस्य भारं वर्धयति स्म.
मया किमी इत्यनेन पृष्टं यत् सः एतत् कोडं स्पष्टतरं सरलतरं च संस्करणं पुनः लिखतु, येन एतावन्तः कीलानि लक्ष्याणि च भ्रमितुं सुलभं न भवति ये पटलं पूरयन्ति:
एषः भागः पैरामीटर् समायोजनपदस्य केन्द्रबिन्दुः नास्ति यदि भवान् वास्तवतः तत् न अवगच्छति तर्हि भवान् तत् त्यक्तुम् अर्हति । —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
गम्यमानमूल्यानि पूरयितुं औसतस्य उपयोगं कुर्वन्तु ।
पूरकम् : यदा अहं पूर्वं आँकडाविश्लेषणं तथा Tableau दृश्यीकरणपाठ्यक्रमं गृहीतवान् तदा शिक्षकः एकं पोस्ट् साझां कृतवान् यस्मिन् विशेषतया अनेकप्रकारस्य अनुपलब्धदत्तांशस्य प्रसंस्करणपद्धतीनां च परिचयः कृतः: https://towardsdatascience.com/all-about-missing-data-handling- b94b8b5d2184
लिङ्कविवरणं योजयन्तु
पदं आङ्ग्लभाषायां अस्ति, तत् द्रष्टुं भवद्भिः पञ्जीकरणं कृत्वा प्रवेशः करणीयः।
————————————————————————————————————————————
अधिकाधिकव्यापकगुणैः सह total_df इति दत्तांशसमूहं कृत्वा, पूर्वदीर्घतायाः अनुसारं पुनः प्रशिक्षणसमूहे परीक्षणसमूहे च विभक्तं भवति
————————————————————————————————————————————
अत्र उक्तं यत् प्रशिक्षणसमूहस्य परीक्षणसमूहस्य च अनुपातः ८:२ अर्थात् ४:१ इति अत्यन्तं सामान्यः विभागानुपातः ।
मूललेखकः सम्भवतः परीक्षणं वैधं च समानं मन्यते स्म, अतः नामकरणे विशेषः भेदः नासीत् ।
परन्तु वस्तुतः एतयोः अवधारणायोः सम्यक् समानता नास्ति (किन्तु अहं पश्यामि यत् कदाचित् भेदः कठोरः नास्ति अत्र अहं test_X तथा test_y इत्येतयोः एकीकृतलेखनपद्धतिं उपयुञ्जामि ।
————————————————————————————————————————————
आयातएलजीबीएम प्रतिगमनकर्ता , यद्यपि टाइटैनिक-दत्तांशसमूहः अधिकतया वर्गीकरणसमस्यानां कृते उपयुज्यते (यात्री जीविष्यति वा इति पूर्वानुमानं करोति), तथापि मूललेखकः अत्र प्रतिगमनसमस्यारूपेण व्यवहरति मया विचारितम् यत् आरम्भकानां कृते सरलेन परिचितेन च दत्तांशसमूहेन सह पाठ्यक्रमं चयनं कृत्वा आरम्भः सुकरः भविष्यति तथा च विडियो व्याख्यानं कृत्वा, अतः अहं प्रतिगमनस्य अथवा वर्गीकरणसमस्यानां विवरणस्य चिन्ता न कृतवान् एकदा भवन्तः प्रक्रियायां प्रवीणाः भवन्ति तदा अभ्यासार्थं अधिकजटिलं मानकीकृतं च दत्तांशं ऑनलाइन-रूपेण अन्वेष्टुं शक्नुवन्ति ।
पूरकशिक्षणलिङ्कः: "LGBMRegressor पैरामीटर् सेटिंग् lgbmclassifier पैरामीटर्"।
https://blog.51cto.com/u_12219/10333606
लिङ्कविवरणं योजयन्तु
(वैसे, अस्मिन् पोस्ट् मध्ये LGBM वर्गीकारः नास्ति वा? लेखकः किमर्थं विशेषतया विडियोमध्ये प्रतिगमनसमस्यानां निवारणस्य उल्लेखं कृतवान्?)
————————————————————————————————————————————
RMSE हानिफलनस्य रूपेण अर्थात् मूल्याङ्कनसूचकाङ्कस्य रूपेण पायथन् फंक्शन् अस्ति यत् मूलमध्यवर्गदोषस्य (मूलमाध्यवर्गदोषस्य (Root Mean Square Error) गणनां करोति ।यावत् लघु भवति तावत् उत्तमम्。
————————————————————————————————————————————
मूललेखकस्य विडियोव्याख्यानस्य अनुसारं कार्यलक्ष्यस्य मापदण्डान् सेट् कुर्वन्तु:
विशिष्टपैरामीटर्नामानां, अर्थानां, अनुशंसितमूल्यानां च कृते कृपया उपरि "LGBMRegressor पैरामीटर् सेटिंग् lgbmclassifier पैरामीटर्" इति पूरकशिक्षणपोस्ट् पश्यन्तु ।
def objective(trial):
param = {
'metric':'rmse',
'random_state':trial.suggest_int('random_state', 2023, 2023), #随机种子固定,所以设置为2023-2023
'n_estimators':trial.suggest_int('n_estimators', 50, 300), #迭代器数量 50-300 的整数
'reg_alpha':trial.suggest_loguniform('reg_alpha', 1e-3, 10.0),
'reg_lambda':trial.suggest_loguniform('reg_lambda', 1e-3, 10.0), #对数正态分布的建议值
'colsample_bytree':trial.suggest_float('colsample_bytree', 0.5, 1), #浮点数
'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), #整数
'min_child_samples':trial.suggest_int('min_child_smaples', 1, 100),
}
model = LGBMRegressor(**param) #调用模型
model.fit(train_X, train_y, eval_set = [(test_X, test_y)], early_stopping_rounds = 100, verbose = False) #拟合
preds = model.predict(test_X) #计算测试集的损失
rmse = RMSE(test_y, preds)
return rmse
————————————————————————————————————————————
कीलसङ्केतः: Optuna इति आह्वयन्तु, शिक्षणकार्यं रचयन्तु, न्यूनतमहानिः निर्दिशन्तु, कार्यनाम सेट् कुर्वन्तु:
#创建的研究命名,找最小值
study = optuna.create_study(direction = 'minimize', study_name = 'Optimize boosting hpyerparameters') #创建了一个Optuna研究对象,用于优化超参数。
#关键代码:调用Optuna,创建一个学习任务,指定让损失最小,设置任务名称。
#目标函数,尝试的次数
study.optimize(objective, n_trials = 100) #将设定好参数的object任务传进来,尝试一百次
#输出最佳的参数
print('Best Trial: ',study.best_trial.params) #找到最佳参数 tudy.best_trial 表示在所有尝试中损失最小的那次试验,params 是一个字典,包含了那次试验中使用的超参数。
lgbm_params = study.best_trial.params #这行代码将最佳参数赋值给 lgbm_params 变量。这样可以将这些参数用于LightGBM模型或其他需要这些超参数的模型。
————————————————————————————————————————————
विचारः सम्यक् अस्ति, परन्तु वयं विचित्रदोषं प्राप्नुमः: fit() इत्यनेन 'early_stopping_rounds' इति अप्रत्याशितम् कीवर्ड-तर्कः प्राप्तः:
किमी इत्यस्य पद्धत्या अद्यापि तस्य प्रयासस्य अनन्तरं त्रुटिः निवेदिता, अतः सम्भवतः अस्माभिः एव दोषः न ग्रहीतव्यः ।
StackFlow इत्यस्य स्वामी द्वौ समाधानौ प्रददति :
https://stackoverflow.com/questions/76895269/lgbmclassifier-fit-got-an-अप्रत्याशित-कीवर्ड-तर्क-प्रारम्भिक-स्थगित-राउंड्स
पोर्टल
ध्यानं कुर्वन्तु यत् pip install इत्यस्य उपयोगः सर्वोत्तमः, conda install install कर्तुं असमर्थः इति भासते ।
परन्तु मया ज्ञातं यत् तस्य कोऽपि उपयोगः नास्ति... अद्यापि मम समाना त्रुटिः प्राप्ता, अहं early_stopping_rounds न ज्ञातवान्, अपि च तत् विलोपनानन्तरं अपि, अहं निम्नलिखित पैरामीटर् verbose न ज्ञातवान्...
पूर्वपूरक-पोस्ट्-अनुसारं पैरामीटर्-परिवर्तनं न सम्भवति इदं प्रतीयते यत् सूचना-अद्यतनं पश्चात् अस्ति...
————————————————————————————————————————————
अन्वेषणप्रक्रियायाः समये मया एकः त्रुटिप्रवणः बिन्दुः अपि प्राप्तः: early_stopping_rounds इत्यस्य अधिकतमसीमा केवलं 100 इति दृश्यते ।
https://blog.csdn.net/YangTinTin/लेख/विवरण/120708391
पोर्टल
————————————————————————————————————————————
अहं अन्तर्जालस्य हस्तचलितरूपेण अन्वेषणं कृत्वा किमीं पृष्टवान्, परन्तु अद्यापि मया अतीव प्रभावी विकल्पः न प्राप्तः। यतः वयं मुख्यतया Optuna इत्यस्य उपयोगं प्रयतितुं इच्छामः, अतः प्रथमं एतौ कष्टप्रदौ पैरामीटर्-द्वयं विलोपयामः ।
model.fit(train_X, train_y, eval_set=[(test_X, test_y)]) #拟合
सम्पूर्ण उद्देश्यसङ्केतः : १.
def objective(trial):
param = {
'metric':'rmse',
'random_state':trial.suggest_int('random_state', 2023, 2023), #随机种子固定,所以设置为2023-2023
'n_estimators':trial.suggest_int('n_estimators', 50, 300), #迭代器数量 50-300 的整数
'reg_alpha':trial.suggest_loguniform('reg_alpha', 1e-3, 10.0),
'reg_lambda':trial.suggest_loguniform('reg_lambda', 1e-3, 10.0), #对数正态分布的建议值
'colsample_bytree':trial.suggest_float('colsample_bytree', 0.5, 1), #浮点数
'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), #整数
'min_child_samples':trial.suggest_int('min_child_smaples', 1, 100),
}
model = LGBMRegressor(**param) #调用模型
model.fit(train_X, train_y, eval_set=[(test_X, test_y)]) #拟合
preds = model.predict(test_X) #计算测试集的损失
rmse = RMSE(test_y, preds)
return rmse
तदा भवन्तः शक्नुवन्तिGetBest_Trial प्राप्त करेंलब्धः:
————————————————————————————————————————————
तथैव मूल यूपी अपि प्रयुक्तःxgboost तथा catboost इतिइष्टतममापदण्डान् अन्वेष्टुं एतादृशीनां पद्धतीनां उपयोगः भवति ।
त्रयाणां भिन्नविधिना मुख्यः अन्तरः चयनितः पैरामीटर् पैराम् तथा मॉडलेन निर्दिष्टः फंक्शन् विधिः इति द्रष्टुं न कठिनम् ।
XGBoost: 1 .
XGBoost परिणाम:
————————————————————————————————————————————
CatBoost: 1।
CatBoost परिणामः : १.
————————————————————————————————————————————
अन्तिमं प्रयुक्तम्के-गुना पार प्रमाणीकरणउत्तमं परिणामं प्राप्नुवन्तु : १.
यन्त्रशिक्षणे क्रॉस्-वैलिडेशन अपि सामान्यतया प्रयुक्तः पदः अस्ति ।
def accuracy(y_true, y_pred):
return np.sum(y_true == y_pred)/len(y_true)
kf इति KFold वस्तु अस्ति, यत् K-fold cross-validation इत्यस्य कार्यान्वयनार्थं scikit-learn पुस्तकालये एकं साधनम् अस्ति । KFold दत्तांशसमूहं विभजतिn_उपसमूहान् विभजति, प्रत्येकं उपसमूहःप्रमाणीकरणसमूहरूपेण क्रमेण गृह्यताम्, शेषं च प्रशिक्षणसमूहरूपेण कार्यं करोति।
for train_index, valid_index in kf.split(x): कोडस्य एषा रेखा KFold ऑब्जेक्ट् इत्यस्य उपरि पुनरावृत्तिं करिष्यति, प्रत्येकस्य पुनरावृत्तेः कृते द्वौ सरणीौ प्रत्यागमिष्यति: train_index तथा valid_indextrain_index इत्यत्र प्रशिक्षणार्थं प्रयुक्तस्य दत्तांशबिन्दुस्य अनुक्रमणिका भवति, यदा तु valid_index इत्यत्र प्रमाणीकरणार्थं प्रयुक्तस्य दत्तांशबिन्दुस्य अनुक्रमणिका भवति . सम्पूर्णसमूहस्य X, y इत्यस्य अनुक्रमणिकायाः अनुसारं प्रत्येकस्य समयस्य प्रशिक्षणसमूहं सत्यापनसमूहस्य च आँकडा: प्राप्तुं शक्नुवन्ति एषा प्रक्रिया सम्पूर्णं वर्गं बाधितुं, प्रत्येकं समये कतिपयान् छात्रान् यादृच्छिकरूपेण चयनं कृत्वा छात्रसमूहं आह्वयितुं इव अस्ति।
————————————————————————————————————————————
इदानीं मया अन्यः सामान्यदोषः सम्मुखीकृतः यद्यपि अहं न जानामि यत् एतत् कथं जातम्, तथापि अहं न जानामि यत् पुनः पायथन् इत्यनेन दोषः ग्रहीतव्यः वा । (यतो हि X तथा Y दत्तांशसमूहानां आकाराः पूर्वं लेखकस्य समानाः आसन्, तार्किकरूपेण पश्चात् तेषु अन्ये क्रियाः न भविष्यन्ति...)
यदि समस्याः सम्मुखीभवन्ति तर्हि मा भयम् अनुभवन्तु, तानि समाधात! अस्मिन् विषये भवद्भिः किमी विश्वासः कर्तव्यः! (वैसे, यत्र अहं प्रशिक्षणं करोमि तस्य कृत्रिमबुद्धिकम्पनीयाः कर्मचारी अपि किमी इत्यस्य उपयोगं कुर्वन्ति, अतः किमी तुल्यकालिकरूपेण विश्वसनीयः अस्ति, तथा च निःशुल्कम् अस्ति!!)
अन्यदोषं न जनयितुं early_stopping_rounds तथा verbose पैरामीटर्स् एकस्मिन् समये निष्क्रियं कर्तुं मा विस्मरन्तु ।
एषः कोडखण्डः तुल्यकालिकरूपेण दीर्घः अस्ति, तत्र बहु पुनरावृत्तयः सन्ति ।
from sklearn.model_selection import KFold #在机器学习库中导入k折交叉验证的函数
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 #将数据分成10份
y=train_df['Survived']
X=train_df.drop(['Survived'],axis=1)
train_accuracy=[]
valid_accuracy=[]
# 存储已学习模型的列表
models = []
#将数据集随机打乱,并分成folds份
kf = KFold(n_splits=folds, shuffle=True, random_state=2023)
#从x_train中按照9:1的比例分成训练集和验证集,并取出下标
for train_index, valid_index in kf.split(X):
#根据下标取出训练集和验证集的数据
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_train_cv和x_valid_cv一起去评估
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次输出一个结果
)
#对训练集进行预测
y_pred_train = model.predict(x_train_cv)
#对验证集进行预测
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保存进列表中
models.append(model)
model = XGBRegressor(**xgb_params)
#模型用x_train_cv去训练,用x_train_cv和x_valid_cv一起去评估
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次输出一个结果
)
#对训练集进行预测
y_pred_train = model.predict(x_train_cv)
#对验证集进行预测
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保存进列表中
models.append(model)
model = CatBoostRegressor(**cat_params)
#模型用x_train_cv去训练,用x_train_cv和x_valid_cv一起去评估
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次输出一个结果
)
#对训练集进行预测
y_pred_train = model.predict(x_train_cv)
#对验证集进行预测
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保存进列表中
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)}")
मम मूललेखकस्य च मध्ये मध्यवर्ती निर्गमः किञ्चित् भिन्नः अस्ति अहं न जानामि यत् अन्तरालस्य कारणं किम् अस्ति ।
परन्तु दिष्ट्या एतावता परिणामाः अतिदुष्टाः न सन्ति इति भाति-
————————————————————————————————————————————
परीक्षणसमूहे प्रत्येकस्य मॉडलस्य कार्यक्षमतायाः परीक्षणं कुर्वन्तु:
test_X = test_df.drop(['Survived'], axis = 1).values
preds_test = []
#用每个保存的模型都对x_test预测一次,然后取平均值
for model in models:
pred = model.predict(test_X)
preds_test.append(pred)
#将预测结果转换为np.array
preds_test_np = np.array(preds_test)
#按行对每个模型的预测结果取平均值
test_pred= preds_test_np.mean(axis = 0 )
test_pred=(test_pred >= 0.5).astype(np.int64)
#平均预测值与 0.5 进行比较,根据比较结果(大于等于 0.5 为 True,否则为 False)将每个值转换为二进制形式(即 1 或 0),然后使用 astype(np.int64) 将布尔值转换为 64 位整数类型。
test_pred
output test_pred.shape पश्यन्तु ।
पायथन् इत्यस्मिन् एकविमीयसरण्याः आकारः प्रायः (N,) इति दर्शितः भवति, यत्र N सरणीयां तत्त्वानां कुलसंख्या भवति ।
————————————————————————————————————————————
यथा test_pred=(test_pred >= 0.5).astype(np.int64) इति वाक्ये प्रयुक्तम्, नूतनं स्तम्भं निर्माय आकारस्य तुलनां कृत्वा True अथवा False इत्यस्य Bool मूल्यं नियुक्तुं बहवः उदाहरणानि सन्ति अस्मिन् बहवः उदाहरणानि सन्ति प्रकल्प:
————————————————————————————————————————————
अन्ते CSV सञ्चिकायां रक्षित्वा लिखन्तु:
submission=pd.read_csv("D:/StudyFiles/Optuna_Titanic/data/gender_submission.csv") #读取CSV文件,并将其存储在变量submission中
submission['Survived']=test_pred #更新了submission DataFrame中的'Survived'列,使其包含模型预测的生存概率或分类结果。
submission.to_csv("submission.csv",index=None) #将更新后的submission DataFrame保存为一个新的CSV文件"submission.csv"。参数index=None表示在保存CSV文件时不包括行索引。
submission.head()
————————————————————————————————————————————
अहं मम कोड-सङ्कुलं CSDN-मुखपृष्ठे प्रेषयिष्यामि, आवश्यकतावशात् मित्राणां स्वागतम् अस्ति यत् ते स्वयमेव तत् डाउनलोड् कुर्वन्तु।
————————————————————————————————————————————
अन्ये सम्बद्धाः शिक्षणसामग्रीः १.
(1) **9.1 Model Parameter Adjustment [Stanford 21 Fall: Practical Machine Learning Chinese Edition]: **शिक्षकस्य Li Mu इत्यस्य विडियो पैरामीटर् समायोजनस्य विषये केचन सिद्धान्तान् परिचययति यदि भवान् पैरामीटर् समायोजनं न अवगच्छति तर्हि भवान् तत् ज्ञातुं शक्नोति मूलभूतं ज्ञानम् ।
https://www.bilibili.com/video/BV1vQ4y1e7LF/?spm_id_from=333.788.recommend_more_video.1&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
पोर्टल
(द्वि) इदं स्वचालितं जिनसेङ्ग समायोजनसाधनं केवलं अत्यन्तं शक्तिशाली अस्ति! इदं यन्त्रशिक्षणस्य तथा गहनशिक्षणस्य पैरामीटरसमायोजनस्य दैनिकप्रयोगं पूर्णतया पूरयितुं शक्नोति! आरम्भकानां कृते अनिवार्यं साधनम्!: मया अनुसृतस्य प्रदर्शनस्य विडियो इव उत्तमः नास्ति यस्मिन् मुख्यतया ओप्टुना इत्यस्य विषये संक्षेपेण किमपि व्यावहारिकं प्रकरणं नास्ति।
https://www.bilibili.com/video/BV1Zs421K7Qj/?spm_id_from=333.788.recommend_more_video.6&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
पोर्टल
तथापि अस्मिन् यूपी-द्वारा प्रवर्तिते पुस्तके मम अतीव रुचिः अस्ति, यतः मम सदृशस्य नवीनस्य कृते यस्य अनुभवस्य अभावः अस्ति, नियमान् अन्वेष्टुं च रोचते, अहं यथार्थतया आशासे यत् मम कृते केषाञ्चन सार्वत्रिकसूत्राणां निर्देशानां च परिचयं कर्तुं मार्गदर्शकपुस्तकं भविष्यति।