informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Goyangan latar belakang:(Jangan membacanya jika Anda ingin menghemat uang)
Saya baru-baru ini menemukan magang sebagai anotator AI, tetapi saya melakukan pekerjaan terkait teks selama proses tersebut. Pada dasarnya, saya masih memperketat sekrup. Saya hanya ingin mempelajari beberapa keterampilan dalam penyesuaian dan penerapan parameter untuk meningkatkan daya saing saya, sehingga saya resume akan lebih mudah untuk dikemas di masa depan.
Tentu saja, pilihan pertama untuk tutorial adalah Universitas Bilibili. Seperti yang diharapkan, saya menemukan alat penyesuaian parameter gratis yang telah menerima banyak ulasan positif.Optuna。
Ngomong-ngomong, magang yang saya lakukan adalahAnotasi teks untuk arahan keamanan konten(Pepatah manusia: Pastikan isi set pelatihan adalahkebenaran politik), tetapi ketika saya menonton video lain untuk mempelajari cara menggunakan Yolo5 untuk topeng dan pengenalan wajah, saya mengetahui bahwa ada yang gratisAnotasi gambarAlat ini sangat mudah digunakan. Saya telah mengujinya sendiri. Sangat mudah untuk dipasang dan digunakan. Tidak ada iklan atau beban apa pun. Ini berfokus pada kesederhanaan dan efisiensi.
Nama alat:LabelGambar
Artikel akun publik yang dibagikan oleh instruktur sebelumnya memberikan pengenalan yang sangat komprehensif:
https://mp.weixin.qq.com/s/AE_rJwd9cKQkUGFGD6EfAg
Portal akun publik
————————————————————————————————————————————
Teks: Tentang Optuna dan proses pembelajaran
**Tautan tutorial video: **https://www.bilibili.com/list/watchlater?oid=832000670&bvid=BV1c34y1G7E8&spm_id_from=333.1007.top_right_bar_window_view_later.content.click
Video master Stasiun B
Metode instalasi:
Anaconda juga harus diinstal melalui conda. Saya baru saja menginstalnya melalui pip seperti yang ditunjukkan dalam video untuk menghindari masalah.
————————————————————————————————————————————
Tautan kasing Kaggle yang digunakan oleh master:
https://www.kaggle.com/code/yunsuxiaozi/pelajari-cara-menggunakan-optuna/notebook
pintu gerbang
Meskipun copy paste itu menyenangkan, namun untuk menjaga kesan + merasakan detailnya, disarankan jika Anda punya waktu, sebaiknya tulis perlahan dengan tangan. Bahkan jika Anda mengetiknya sesuai itu, itu lebih baik daripada menyalin dan menempelkan secara langsung. Saat pertama kali mempelajari suatu keterampilan, lambat itu cepat.
Demikian pula, jika Anda memiliki Anaconda di komputer Anda, disarankan untuk membangun lingkungan virtual khusus untuk menguji Optuna guna mencegah konflik.
————————————————————————————————————————————
Tutorial konstruksi lingkungan virtual conda master CSDN dan konfigurasi lingkungan virtual jupyter:
https://blog.csdn.net/fanstering/artikel/detail/123459665
Anda dapat melewati langkah ini jika Anda tidak memiliki Anaconda
Saya sudah familiar dengan langkah membangun lingkungan virtual ini. Lingkungan dan paket Optuna telah diinstal. Namun, Jupyter masih melaporkan bahwa tidak ada perpustakaan Optuna ketika saya menginstalnya sesuai dengan tutorial ahli ini.nb_kondaMasalahnya akan terselesaikan nanti.
————————————————————————————————————————————
Kemudian masuk ke proses penulisan kode yang sudah biasa. Pertama, impor pustaka Python yang diperlukan dan instal apa pun yang hilang. Baik pip install maupun conda install dapat diterima.
Jika dia melaporkan kesalahan yang tidak jelas: TqdmWarning: IProgress tidak ditemukan. Harap perbarui jupyter dan ipywidgets. Lihat https://ipywidgets.read
zhebu
Jangan takut, Anda hanya perlu mengupgrade Jupyter.
Setelah saya menyelesaikan tiga langkah pertama, saya menyegarkan dan menjalankan langkah program ini dan semuanya baik-baik saja.
————————————————————————————————
Tautan unduhan kumpulan data: https://www.kaggle.com/competitions/titanic/data?select=train.csv
pintu gerbang
total_df['Embarked_is_nan']=(total_df['Embarked']!=total_df['Embarked'])
Baris kode ini membuat kolom baru 'Embarked_is_nan', yang digunakan untuk menandai nilai null (NaN) di kolom 'Embarked'. Jika elemen di kolom 'Dimulai' bukan elemen itu sendiri (yaitu elemen tersebut adalah NaN), posisi terkait di kolom baru akan disetel ke True.
Ini pertama kalinya saya melihat tulisan seperti ini.
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()
Potongan kode ini agak rumit, pertama-tama memfilter empat fitur penting ['Pclass', 'Sex', 'SibSp', 'Parch'] dan menyimpannya dalam daftar kunci situasi kelangsungan hidup penumpang.
Kemudian ulangi daftar satu per satu untuk melihat berapa banyak nilai unik yang dimiliki setiap fitur dalam set pelatihan.
Jika jumlah nilai unik len (nilai) kolom kunci kurang dari 10, kode akan menganalisis lebih lanjut hubungan antara kolom ini dan situasi kelangsungan hidup.
(Saya sedikit bingung kenapa key!= “Survived” ditekankan. Tidak ada nilai “Survived” di daftar kunci ini??)
Cetak dan temukan bahwa keempat atribut memenuhi ketentuan:
key_target=train_df['Survived'].groupby([train_df[key]]).mean()
Pada langkah ini, di set pelatihan train_df, kode menghitung tingkat kelangsungan hidup rata-rata kolom 'Bertahan' yang sesuai dengan setiap nilai unik dalam daftar kunci.
Seperti terlihat pada gambar, nilai key_target dataframe berubah seiring dengan nilai atribut key di setiap siklus. Misalnya, ketika key = Pclass diproses, kunci key_target adalah 1, 2, dan 3, dan kunci key_target adalah 1, 2, dan 3. nilai adalah tingkat kelangsungan hidup rata-rata yang sesuai; pemrosesan Ketika kunci = jenis kelamin, kunci dari key_target adalah 'Perempuan' dan 'Pria', dan nilainya juga merupakan tingkat kelangsungan hidup rata-rata yang sesuai.
Langkah selanjutnya agak rumit. Gambarlah tabel kata untuk memahaminya:
Ada total empat atribut dalam kunci. Salah satunya akan digunakan untuk setiap kasus. Terakhir, data dari empat atribut akan disimpan di total_df, diringkas dan dikembalikan.
Ini adalah kasus PClass. PClass memiliki tiga nilai: 1/2/3. Tingkat kelangsungan hidup rata-rata dihitung untuk setiap nilai dan disimpan dalam key_target.
Kemudian kunci key_target dikeluarkan dan disimpan di daftar kunci (ya, daftar ini disebut juga kunci..., tapi kali ini nilai di dalamnya harus tiga nilai 1/ 2/3 dari PClass), dan nilainya disimpan dalam daftar target (yaitu, tiga angka 0,629630, 0,472826, 0,242363), dan kemudian memberi nama artifisial pada dua kolom kunci dan nilai , dan kolom nilai lebih dipersonalisasi dan harus disebut 'PClass_target'.
Dengan analogi, key_target dari tiga atribut berikutnya semuanya ada dalam rutinitas ini, namun tabel total_df terus berkembang.
(laki-laki di sini adalah kata-kata di luar batas, gambarnya terpotong, dan bagian terpisah ditambahkan kemudian)
Hingga akhirnya total_df menjadi sebuah tabel besar:
Sejujurnya, untuk kasus Optuna yang tujuan utamanya adalah untuk mengajari orang cara menggunakan alat penyesuaian parameter, logika yang ditulis oleh penulis asli pada langkah ini benar-benar menambah beban pemahaman saya...
Saya meminta Kimi untuk menulis ulang kode ini menjadi versi yang lebih jelas dan sederhana, sehingga tidak mudah membingungkan begitu banyak kunci dan target yang memenuhi layar:
Bagian ini bukan fokus dari langkah penyesuaian parameter. Jika Anda benar-benar tidak memahaminya, Anda dapat melewatinya. ------------------------------------------------------------------------------------------------
Gunakan rata-rata untuk mengisi nilai yang hilang. Tandai langkah-langkah umum dalam pemrosesan data yang Anda pelajari.
Tambahan: Saat saya mengikuti kursus analisis data dan visualisasi Tableau sebelumnya, guru membagikan postingan yang secara khusus memperkenalkan berbagai jenis data yang hilang dan metode pemrosesan: https://towardsdatascience.com/all-about-missing-data-handling- b94b8b5d2184
Tambahkan deskripsi tautan
Postingan tersebut dalam bahasa Inggris dan Anda harus mendaftar dan masuk untuk melihatnya.
————————————————————————————————————————————
Setelah memiliki data set total_df dengan atribut yang semakin lengkap, maka dibagi kembali menjadi training set dan test set sesuai dengan panjang sebelumnya.
————————————————————————————————————————————
Disebutkan di sini bahwa rasio set pelatihan dan set pengujian adalah 8:2, yaitu 4:1, yang merupakan rasio pembagian yang sangat umum.
Penulis aslinya mungkin menganggap tes dan valid sebagai hal yang sama, jadi tidak ada perbedaan khusus dalam penamaannya.
Namun nyatanya kedua konsep ini tidak persis sama (tapi menurut saya terkadang perbedaannya tidak tegas). Di sini saya menggunakan metode penulisan yang terpadu yaitu test_X dan test_y.
————————————————————————————————————————————
imporRegresor LGBTM , meskipun kumpulan data Titanic sebagian besar digunakan untuk masalah klasifikasi (memprediksi apakah seorang penumpang akan selamat), penulis asli memperlakukannya di sini sebagai masalah regresi. Saya menilai bagi pemula akan lebih mudah memulainya dengan memilih tutorial dengan kumpulan data yang sederhana dan familiar serta penjelasan video, sehingga saya tidak khawatir dengan detail masalah regresi atau klasifikasi. Setelah Anda mahir dalam prosesnya, Anda dapat menemukan data yang lebih kompleks dan terstandar secara online untuk dipraktikkan.
Tautan pembelajaran tambahan: "Pengaturan parameter LGBMRegressor parameter lgbmclassifier"
https://blog.51cto.com/u_12219/10333606
Tambahkan deskripsi tautan
(Ngomong-ngomong, bukankah ada pengklasifikasi LGBTM di postingan ini? Mengapa penulis secara khusus menyebutkan penanganan masalah regresi di video?)
————————————————————————————————————————————
RMSE sebagai fungsi kerugian, yaitu indeks evaluasi, adalah fungsi Python yang menghitung kesalahan akar rata-rata kuadrat (Root Mean Square Error).Semakin kecil semakin baik。
————————————————————————————————————————————
Tetapkan parameter tujuan tugas sesuai dengan penjelasan video penulis asli:
Untuk nama parameter tertentu, arti, dan nilai yang direkomendasikan, silakan merujuk ke postingan pembelajaran tambahan "Pengaturan Parameter LGBMRegressor Parameter lgbmclassifier" di atas.
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
————————————————————————————————————————————
Kode kunci: Panggil Optuna, buat tugas pembelajaran, tentukan kerugian minimum, dan tetapkan nama tugas:
#创建的研究命名,找最小值
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模型或其他需要这些超参数的模型。
————————————————————————————————————————————
Idenya bagus, tapi kami menemui kesalahan aneh: fit() mendapat argumen kata kunci yang tidak terduga 'early_stopping_rounds':
Metode Kimi masih melaporkan kesalahan setelah mencobanya, jadi mungkin bukan kita yang harus disalahkan.
Para ahli StackFlow memberikan dua solusi:
https://stackoverflow.com/questions/76895269/lgbmclassifier-fit-mendapat-argumen-kata-kunci-yang-tak-terduga-untuk-menghentikan-putaran-lebih-awal
pintu gerbang
Perhatikan bahwa yang terbaik adalah menggunakan pip install, conda install sepertinya tidak dapat menginstal.
Tetapi ternyata tidak ada gunanya... Saya masih mendapatkan kesalahan yang sama, saya tidak mengenali early_stopping_rounds, dan bahkan setelah menghapusnya, saya tidak mengenali parameter verbose berikut...
Tidak mungkin mengubah parameter sesuai postingan tambahan sebelumnya. Sepertinya update informasinya tertinggal...
————————————————————————————————————————————
Selama proses pencarian, saya juga menemukan titik rawan kesalahan: early_stopping_rounds sepertinya hanya memiliki batas maksimal 100.
https://blog.csdn.net/YangTinTin/artikel/detail/120708391
pintu gerbang
————————————————————————————————————————————
Saya mencari secara manual di Internet dan bertanya pada Kimi, tetapi saya belum menemukan alternatif yang efektif. Karena kami terutama ingin mencoba penggunaan Optuna, pertama-tama kami menghapus dua parameter yang merepotkan ini.
model.fit(train_X, train_y, eval_set=[(test_X, test_y)]) #拟合
Kode tujuan lengkap:
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
Maka kamu bisaDapatkan Uji Coba_TerbaikTelah mendapatkan:
————————————————————————————————————————————
Begitu pula dengan UP asli yang juga digunakanxgboost dan catboostMetode serupa digunakan untuk mencari parameter optimal.
Tidak sulit untuk melihat bahwa perbedaan utama antara ketiga metode berbeda adalah parameter parameter yang dipilih dan metode fungsi yang ditentukan oleh model.
XGBoost:
Hasil XGBoost:
————————————————————————————————————————————
Penguat Kucing:
Hasil CatBoost:
————————————————————————————————————————————
terakhir digunakanValidasi silang K-foldDapatkan hasil terbaik:
Validasi silang juga merupakan istilah yang umum digunakan dalam pembelajaran mesin.
def accuracy(y_true, y_pred):
return np.sum(y_true == y_pred)/len(y_true)
kf adalah objek KFold, yang merupakan alat di perpustakaan scikit-learn untuk mengimplementasikan validasi silang K-fold. KFold membagi kumpulan data menjadin_splits subset, setiap subsetBergiliran sebagai set validasi, dan sisanya berfungsi sebagai set pelatihan.
untuk train_index, valid_index di kf.split(x): Baris kode ini akan melakukan iterasi pada objek KFold, mengembalikan dua array untuk setiap iterasi: train_index dan valid_index.train_index berisi indeks titik data yang digunakan untuk pelatihan, sedangkan valid_index berisi indeks titik data yang digunakan untuk validasi . Menurut indeks set lengkap X, y, Anda bisa mendapatkan data set pelatihan dan verifikasi setiap kali. Proses ini seperti mengganggu seluruh kelas, memilih beberapa siswa secara acak setiap kali dan memanggil sekelompok siswa.
————————————————————————————————————————————
Sekarang saya menemukan bug umum lainnya. Meskipun saya tidak tahu bagaimana hal itu terjadi, saya tidak tahu apakah Python harus disalahkan lagi. (Karena bentuk kumpulan data X dan Y sama persis dengan bentuk penulis sebelumnya, secara logika tidak akan ada operasi lain nanti...)
Jangan takut jika Anda menemui masalah, perbaiki! Anda harus mempercayai Kimi dalam hal ini! (Ngomong-ngomong, karyawan perusahaan kecerdasan buatan tempat saya magang juga menggunakan Kimi, jadi Kimi relatif dapat dipercaya, dan gratis!!)
Jangan lupa untuk menonaktifkan parameter early_stopping_rounds dan verbose secara bersamaan untuk menghindari kesalahan lainnya.
Potongan kode ini relatif panjang dan banyak pengulangannya. Berhati-hatilah agar tidak membuat kesalahan.
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)}")
Hasil perantara antara saya dan penulis asli agak berbeda. Saya tidak tahu apa yang menyebabkan kesenjangan tersebut:
Namun untungnya, sejauh ini hasilnya tidak terlalu buruk:
————————————————————————————————————————————
Uji performa setiap model pada set pengujian:
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
Lihatlah outputnya test_pred.shape. Jangan melihat bentuk persegi dari array. Lihatlah bentuknya sebagai array satu dimensi dengan 418 elemen.
Dalam Python, bentuk array satu dimensi biasanya direpresentasikan sebagai (N,), dimana N adalah jumlah total elemen dalam array.
————————————————————————————————————————————
Seperti yang digunakan dalam kalimat test_pred=(test_pred >= 0.5).astype(np.int64), ada banyak contoh pembuatan kolom baru dan membandingkan ukurannya untuk menetapkan nilai Bool Benar atau Salah proyek:
————————————————————————————————————————————
Terakhir simpan dan tulis ke file 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()
————————————————————————————————————————————
Saya akan mengirimkan paket kode saya ke beranda CSDN. Teman-teman yang membutuhkan dipersilakan untuk mendownloadnya sendiri. Sampai jumpa di tutorial selanjutnya.
————————————————————————————————————————————
Konten pembelajaran terkait lainnya:
(1) **9.1 Penyesuaian Parameter Model [Stanford 21 Fall: Pembelajaran Mesin Praktis Edisi Cina]: **Video Guru Li Mu memperkenalkan beberapa teori tentang penyesuaian parameter. Jika Anda tidak memahami penyesuaian parameter, Anda dapat menontonnya untuk mempelajarinya pengetahuan dasar. .
https://www.bilibili.com/video/BV1vQ4y1e7LF/?spm_id_from=333.788.recommend_more_video.1&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
pintu gerbang
(dua) Alat penyesuaian ginseng otomatis ini terlalu kuat! Ini sepenuhnya dapat memenuhi penggunaan pembelajaran mesin sehari-hari dan penyesuaian parameter pembelajaran mendalam! Alat yang harus dimiliki untuk pemula!: Isi videonya tidak sebagus video demonstrasi yang saya ikuti, terutama membahas tentang Optuna secara singkat tanpa ada kasus praktis.
https://www.bilibili.com/video/BV1Zs421K7Qj/?spm_id_from=333.788.recommend_more_video.6&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
pintu gerbang
Namun saya sangat tertarik dengan buku yang diperkenalkan oleh UP ini, karena bagi pemula seperti saya yang kurang pengalaman dan suka mencari aturan, saya sangat berharap memiliki buku panduan yang dapat mengenalkan saya pada beberapa rumus dan petunjuk universal.