2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Maecenas vitae quassum:(Si pecuniam servare vis, noli eam legere)
Nuper internship ut AI annotatorem inveni, sed per processum opus actis actis facerem. Essentialiter cochleis adhuc constringebatur. Modo volui discere aliquas artes in parametri commensuratione et instruere ad aemulationem meam augendam, ut my . Proin facilior esset ad sarcina in futurum.
Scilicet, prima electio paedagogorum est Bilibili University.Optuna。
Viam amet egiTextus annotationem pro directione securitatis content(Humanum dicens: Perficite ut materia disciplinae paro ispolitica rectitudo) sed cum alias videos specto discere quomodo Yolo5 pro larva et facie uti cognoscas, didici liberum esse.Imago annotationPerfacile est instrumentum uti.
Instrumentum nomen:LabelImg
Articulus publici rationis communicatus ab instructore ante introductionem valde comprehensivam dedit;
https://mp.weixin.qq.com/s/AE_rJwd9cKQkUGFGD6EfAg
Publica causa porta
————————————————————————————————————————————
Text: De Optuna et processu discendi
**Video nexus tutorialis: **https://www.bilibili.com/list/watchlater?oid=832000670&bvid=BV1c34y1G7E8&spm_id_from=333.1007.top_right_bar_window_view_later.content.click
Videos of Station B dominis
Modus instruitur:
Anaconda per conda institui debet.
————————————————————————————————————————————
Kaggle causa ligaminis a dominis adhibita:
https://www.kaggle.com/code/yunsuxiaozi/learn-to-use-the-optuna/notebook
portal
Etsi exscribere ac pasting iocum est, ut sentiat + sentiat retineat singula, commendatur ut si tempus habes, manu lente scribere debeas protinus transiens. Cum primum artem discis, tardus est celer.
Similiter, si Anaconda in computatro tuo habes, commendatur ut peculiarem virtualem environment aedificare, ut Optuna certamina prohibeat.
————————————————————————————————————————————
CSDN domini conda virtualis environment constructionis et jupyter virtualis environment configuration tutorials:
https://blog.csdn.net/fanstering/article/details/123459665
Hunc gradum transilire potes si Anaconda non habes
Mihi iam familiare sum cum hoc gradu ad constituendum virtualem environment. Ambitu et fasciculis Optuna inauguratus est. Sed Iupyter adhuc refert nullam esse bibliothecam Optuna cum eam curro.nb_condaSolvitur postea quaestio.
————————————————————————————————————————————
Deinde nota processus scribendi codicem ingredere. Primum, require bibliothecas Python requisitas, et quidquid deest, institue. Utraque pituita inaugurata et conda inaugurata accepta sunt.
Si comprime refert errorem; TqdmWarning: IProgress non invenitur. Quaeso renovare jupytrum et ipywidgets. Vide https://ipywidgets.read
zhebu
Ne timeas, iustus opus est ut Iuppiter upgrade.
Postquam tres primos gradus peregi, recreavi et cucurri hunc gradationis gradum et omnia denique erant.
————————————————————————————————
Data set download link: https://www.kaggle.com/competitions/titanic/data?select=train.csv
portal
total_df['Embarked_is_nan']=(total_df['Embarked']!=total_df['Embarked'])
Haec linea codicis novam columnam "Embarked_is_nan" creat, quae valores nullos (NaN) in columna "Embarked" notare solebat. Si elementum in columna "Embarked" non est ipsum (i.e. elementum est NaN), positio debita in columna nova ponatur vera.
Hoc primum vidi scribendi genus.
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()
Hoc fragmentum codicis est aliquid complicatum. Primum Filtra quattuor notas magni momenti ['Pclass', 'Sex', 'SibSp', 'Parch'] reponit et in indice clavium de situ viatorum superstes.
Tum iteramus per indicem singillatim ad videndum quot valores singulares quaelibet lineamenta in statuto institutionis habeat.
Si numerus valorum singularium len (valum) columnae clavis minor est quam X, codice ulterior relationem inter hanc columnam et superstitiosam condicionem resolvet.
(Parum confusa sum de cur clavis!= "Servived" confirmatur. Nulla valoris "Servived" in hoc indicem clavium non est?
Imprime et invenies quattuor attributa omnia occurrere conditionibus;
key_target=train_df['Survived'].groupby([train_df[key]]).mean()
In hoc gradu, in disciplina train_df posita, signum computat medium superstitem de "superstite" columnae unicuique valori singulari clavium in indice respondente.
Ut ex figura videri potest, valor notitiarum clavorum cum valore clavium attributi in singulis cyclis valor mediocris processus superstes est respondens. Cum clavis = sex, claves key_target sunt "Male" et "Male", et valores etiam respondentes mediocris superstes.
Vestigia subsequens sunt aliquantulum implicata.
Summa quattuor attributorum in clavibus sunt. Una earum pro quolibet casu adhibebitur. Tandem notitia quattuor attributorum in total_df, summatim et restituetur.
PClass causa est. PClass tres valores habet: 1/2/3.
Tunc clavis clavium eximitur et reponitur in indice clavium (sic, hoc album etiam claves ... appellatur, sed hoc tempore valores tres valores in ea debent esse 1/ 2/3 PClass), et valor in indice scopo reponitur et columna valoris magis personale quam dici debet "PClass_target".
Simili modo, clavis_scoporum trium sequentium attributorum omnes in hac exercitatione sunt, sed mensa totalis_df constanter dilatatur.
(masculinum hic verbum ex terminis, imago abscissa est, fragmentum postea separatum adscriptum est)
Donec tandem total_df fit mensa magna:
Esse honestum, in casu Optuna cuius praecipuum propositum est docere homines quomodo uti instrumento commensurationis instrumento, logica ab authore in hoc gradu scripta vere augetur onus intellectus mihi...
Rogavi Kimi ut hunc codicem in versionem clariorem et simpliciorem rescriberem, ita ut non facile tot claves et scuta confundere, quae velum implent;
Haec pars focus parametri tionibus gradus non est. --------------
Mediocris utere ut valores absentes impleant. Attende communes gradus in notitia processus didicisti.
Supplementum: Cum analysin data et tabulae visualizationis ante cursum cepi, magister cursorem communicavit quae in specie multa genera notitiarum et processus modorum absentium induxit: https://towardsdatascience.com/all-about-missing-data-handling- b94b8b5d2184
Add link descriptionem
Stipes Anglice est et debes subcriptio et aperi in ut eam videas.
————————————————————————————————————————————
Post datas total_df positas cum attributis plus et plus comprehensivis, dividitur in institutionem et probationem secundum praecedentis longitudinem.
————————————————————————————————————————————
Hic memoratur quod certa ratio institutionis ac test est 8:2, id est, 4:1, quod est communissima ratio divisionis.
Auctor verisimiliter probatum et validum tamquam idem reputavit, ita nulla specialis distinctionis nominandi.
Sed hae duae notiones non prorsus eadem sunt (sed video interdum distinctionem non strictam esse).
————————————————————————————————————————————
importLGBM regressor , quamvis notitia certa Titanica plerumque ad problemata classificationis adhibeatur (praedicendo an vector superstes erit), auctor auctor hic ut problema regressionis tractat. Incipientibus existimavi, faciliorem fore ut incipiat eligendo doceo cum simplicibus et familiaribus notitiis et explicationibus video, quare non curavi de singulis quaestionibus regressionis vel classificationis. Postquam proficis in processu, plura reperire potes intricata et normata data in usu online.
Accessiones studiorum ligamen: "LGBMRegressor parametri obitus lgbmclassifier parameter"
https://blog.51cto.com/u_12219/10333606
Add link descriptionem
(Per viam, annon LGBM classificans in hac statione est? Cur auctor nominatim mentionem fecit de quaestionibus regressionis in video?)
————————————————————————————————————————————
RMSE munus amissum, id est index aestimationis, munus est Pythonis quod radix medium quadratum erroris computat (Root Mean Square Error).Minora meliora。
————————————————————————————————————————————
Pone ambitum negotii obiectivi secundum explicationem auctoris auctoris;
Ad nomina propria parametri, significationes et valores commendati, placere ad supplementum discendi post "LGBMRegressor Parametri Ponendi lgbmclassifier Parameter" supra.
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
————————————————————————————————————————————
Clavis codicem: Optunam voca, opus discendi crea, minimum dispendium denota et nomen munerum impone:
#创建的研究命名,找最小值
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模型或其他需要这些超参数的模型。
————————————————————————————————————————————
Idea tenuis est, sed errorem alienum offendimus: aptum () inopinatum keyword argumenti 'early_stopping_rounds':
Methodus Kimi errorem adhuc expertum retulit, ita verisimile non est nos qui culpam accipiamus.
Magistri StackFlow duas solutiones praebent;
https://stackoverflow.com/questions/76895269/lgbmclassifier-fit-got-an-unexpected-keyword-argument-early-stopping-rounds
portal
Nota optimum esse pituitam institutionem uti, conda institutionem instituere non posse videtur.
Sed nihil utile deprehendi... Errorem adhuc nactus sum, non agnovi primos moras, et etiam deletis, sequentem verbosum modulum non agnovi.
parametros mutare non potest secundum priorem locum supplementum. Videtur notitias renovationis deesse.
————————————————————————————————————————————
Per processum inquisitionis, punctum erroris pronum etiam inveni: mane_statio_rotunda solum maximum terminum 100 habere videtur.
https://blog.csdn.net/YangTinTin/article/details/120708391
portal
————————————————————————————————————————————
Manually in Interrete quaesivi et Kimi quaesivi, sed aliud tamen valde efficax non inveni. Cum Optunae usum maxime experiri volumus, primum istos duos parametri molestos delemus.
model.fit(train_X, train_y, eval_set=[(test_X, test_y)]) #拟合
Objective codice completum:
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
Tunc potesGetBest_TrialObtinuit:
————————————————————————————————————————————
Similiter etiam originale UP etiam usus estxgboost et catboostSimilia modi adhibentur ut ambitum meliorem invenirent.
Haud difficile est animadvertere praecipuam differentiam inter tres modos diversos esse modulum param delectum ac functionem methodi ab exemplari specificatam.
XGBoost:
XGBoost eventus:
————————————————————————————————————————————
CatBoost:
Proventus CatBoost:
————————————————————————————————————————————
novissime usus estK duplex crucis sanatioAdepto optimos eventus:
Crux-validationis quoque terminus usus est in apparatus eruditionis.
def accuracy(y_true, y_pred):
return np.sum(y_true == y_pred)/len(y_true)
kf obiectum KFold est, quod instrumentum est in bibliotheca scikit-discenda ad K duplicis crucis-validationis exsequendum. KFold dividit data set inn_splits copiaquisque subsetVices in sanatio setceteri pro disciplina posuit.
ad train_index, valid_index in kf.split(x): Haec linea codicis iterabit per obiectum KFold, reddens duas vestes pro unaquaque iteratione: train_index et valid_index.train_index continet indicem notitiae punctum ad formandum adhibitum, cum valid_index continet indicem notae punctum ad sanationem adhibitum. . Iuxta indicem ad integrum X, y constitutum, institutio certa et verificationis notitias singulis diebus acquirere potes. Hic processus est quasi totum genus turbans, passim paucos discipulos singulis diebus eligens et discipulorum coetum vocans.
————————————————————————————————————————————
Nunc aliam cimex communem incidi. Etsi nescio quomodo acciderit, nescio an iterum culpam de Pythone capiat. (Quia figurae datarum X et Y propositarum prorsus eaedem erant ac prius auctoris, consequenter nullae operationes in eis postea erunt...)
Noli timere si difficultates tibi occurras, eas figere! Kimi in hoc uno habes fiduciam! (Per viam conductorum societatis artificiosae intelligentiae ubi ego interning etiam utor Kimi, sic Kimi est fidelis relative et liber est!!)
Noli oblivisci inactivandi praecursus et parametros verbosos simul vitare alium errorem causantem.
Hoc fragmentum codicis relative longum est, et multae sunt repetitiones.
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)}")
Medium inter me et auctorem auctoris aliquantum differt.
Sed peropportune videtur quod non sunt nimis mali eventus;
————————————————————————————————————————————
Probate uniuscuiusque exemplarium observantiam in actis testium;
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
Aspice output test_pred.shape. Noli inspicere figuram quadratam ordinatae.
In Pythone figura unius dimensionis ordinatae plerumque repraesentatur (N,), ubi N est numerus elementorum in acie.
————————————————————————————————————————————
Sicut usus est in sententia test_pred=(test_pred>=0.5).astypum(np.int64), multa exempla creandi novam columnam et magnitudinem comparandi ad valorem Veri vel falsi assignandi exstare:
————————————————————————————————————————————
Postremo salvum fac et scribe ad fasciculum 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()
————————————————————————————————————————————
Codicis sarcinam mittam ad CSDN paginam.
————————————————————————————————————————————
Aliae doctrinae contentae affinis:
(1) **9.1 Exemplar Parametri Temperatio [Stanford 21 Fall: Machina Practica Doctrinae Sinicae Editionis]: **Magister Li Mu's video nonnullas opiniones de parametri temperatio inducit basic scientia.
.
portal
(duo) Hoc automatic instrumentum temperatio ginseng simpliciter nimis potens est! Ad cotidianum usum machinae discendi et altae discendi moduli temperatio plene occurrere potest! Oportet habere instrumentum incipientibus!: Contentum video non tam bonum quam demonstrationem video quam secutus sum. Maxime loquitur de Optuna breviter sine casibus practicis.
. .
portal
Attamen valde quaero in libro ab hoc UP introducto, quia novitii similis mei, qui experientia caret et regulas invenire vult, vere spero nos habere philosophicum, qui me ad aliquas formulas et directiones universales inducere potest.