내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
배경 흔들림:(돈 아끼고 싶다면 읽지 마세요)
최근 AI 주석가로 인턴십을 찾았지만 그 과정 내내 텍스트 관련 작업을 하고 있었습니다. 본질적으로 저는 경쟁력을 높이기 위해 매개변수 조정 및 배포에 대한 몇 가지 기술을 배우고 싶었습니다. 이력서는 앞으로는 포장하기가 더 쉬울 것입니다.
물론 튜토리얼의 첫 번째 선택은 Bilibili University입니다. 예상대로 많은 긍정적인 평가를 받은 무료 매개변수 조정 도구를 찾았습니다.옵투나。
그런데 제가 했던 인턴십은콘텐츠 보안 방향에 대한 텍스트 주석(사람의 말: 훈련 세트의 내용이 다음과 같은지 확인하세요.정치 정확성) 그런데 마스크와 얼굴인식에 Yolo5를 활용하는 방법을 알아보기 위해 다른 영상을 보다가 무료가 있다는 걸 알게 됐어요.이미지 주석이 도구는 사용하기 매우 쉽습니다. 설치 및 사용이 매우 쉽습니다. 단순성과 효율성에 중점을 둡니다.
도구 이름:라벨Img
이전에 강사가 공유한 공개 계정 기사는 매우 포괄적인 소개를 제공했습니다.
한국어: https://mp.weixin.qq.com/s/AE_rJwd9cKQkUGFGD6EfAg
공개 계정 포털
————————————————————————————————————————————
텍스트: Optuna 및 학습 과정 정보
**비디오 튜토리얼 링크: **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도 conda를 통해 설치해야 합니다. 저는 문제를 해결하기 위해 영상에 나온 것처럼 pip를 통해 설치했습니다.
————————————————————————————————————————————
마스터가 사용하는 Kaggle 사례 링크:
https://www.kaggle.com/code/yunsuxiaozi/optuna-사용법을-배우세요/노트북
문
복사해서 붙여넣는 것도 재미있지만 느낌+세세한 느낌을 유지하기 위해서는 시간이 있으면 손으로 천천히 써보는 것이 복사해서 붙이는 것보다 낫습니다. 직접 붙여 넣기. 처음 기술을 배울 때 느린 것은 빠른 것입니다.
마찬가지로 컴퓨터에 Anaconda가 있는 경우 충돌을 방지하기 위해 Optuna를 테스트할 수 있는 특별한 가상 환경을 구축하는 것이 좋습니다.
————————————————————————————————————————————
CSDN 마스터의 conda 가상 환경 구축 및 jupyter 가상 환경 구성 튜토리얼:
https://blog.csdn.net/fanstering/article/details/123459665
Anaconda가 없으면 이 단계를 건너뛸 수 있습니다.
가상 환경을 구축하는 이 단계는 이미 잘 알려져 있습니다. 그러나 Jupyter를 실행하면 이 전문가의 튜토리얼에 따라 Optuna 라이브러리가 없다고 보고됩니다.nb_콘다문제는 나중에 해결될 것입니다.
————————————————————————————————————————————
그런 다음 익숙한 코드 작성 프로세스를 시작합니다. 먼저 필요한 Python 라이브러리를 가져오고 누락된 항목을 설치합니다. pip 설치와 conda 설치 모두 허용됩니다. Anaconda는 후자를 권장합니다.
그가 유령 오류를 보고하는 경우: 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' 열에 null 값(NaN)을 표시하는 데 사용되는 새 열 'Embarked_is_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(값) 수가 10개 미만인 경우 코드는 이 열과 생존 상황 간의 관계를 추가로 분석합니다.
(왜 key!= “Survived”가 강조되는지 조금 헷갈립니다. 이 키 목록에는 “Survived” 값이 없나요??)
이를 인쇄하여 네 가지 속성이 모두 다음 조건을 충족하는지 확인하세요.
key_target=train_df['Survived'].groupby([train_df[key]]).mean()
이 단계에서 훈련 세트 train_df에서 코드는 키 목록의 각 고유 값에 해당하는 'Survived' 열의 평균 생존율을 계산합니다.
그림에서 볼 수 있듯이 key_target 데이터 프레임의 값은 각 주기마다 key 속성의 값에 따라 변경됩니다. 예를 들어 key = Pclass가 처리되면 key_target의 키는 1, 2, 3이고 value는 해당 평균 생존율이며, 처리 key = sex인 경우 key_target의 키는 '여성', '남성'이며 값도 해당 평균 생존율입니다.
후속 단계는 약간 복잡합니다. 단어 테이블을 그려서 이해하세요.
키에는 총 4개의 속성이 있으며, 그 중 하나가 각 경우에 사용됩니다. 마지막으로 4개의 속성의 데이터가 total_df에 저장되어 요약되어 반환됩니다.
PClass의 경우에는 1/2/3의 세 가지 값이 있습니다. 각 값에 대해 평균 생존율이 계산되어 key_target에 저장됩니다.
그런 다음 key_target의 키를 꺼내서 키 목록에 저장합니다. (예, 이 목록을 키라고도 합니다... 하지만 이때 그 안의 값은 3개의 값 1/이어야 합니다. 2/3 of PClass), 그 값은 대상 목록에 저장됩니다(즉, 3개의 숫자 0.629630, 0.472826, 0.242363). 그런 다음 키와 값의 두 열에 인위적으로 이름을 지정합니다. , 값 열은 더욱 개인화되어 'PClass_target'이라고 불러야 합니다.
비유하자면 다음 세 가지 속성의 key_target은 모두 이 루틴에 있지만 total_df 테이블은 지속적으로 확장됩니다.
(여기서 남성은 범위를 벗어난 단어이며, 사진이 잘렸으며 나중에 별도의 부분이 추가되었습니다)
마침내 total_df가 큰 테이블이 될 때까지:
솔직히 말해서, 사람들에게 매개변수 조정 도구 사용법을 가르치는 것이 주 목적인 Optuna 사례의 경우, 이 단계에서 원저자가 작성한 논리는 저에게 이해의 부담을 정말 가중시켰습니다...
나는 Kimi에게 이 코드를 더 명확하고 간단한 버전으로 다시 작성하여 화면을 채우는 수많은 키와 대상을 혼동하기가 쉽지 않도록 요청했습니다.
이 부분은 매개변수 조정 단계의 초점이 아닙니다. 정말로 이해가 되지 않으면 건너뛰셔도 됩니다. —————————————————————————————————————————
평균을 사용하여 누락된 값을 채우세요. 배운 데이터 처리의 일반적인 단계를 표시하세요.
보충: 이전에 데이터 분석 및 Tableau 시각화 과정을 수강했을 때 선생님께서 여러 유형의 누락된 데이터 및 처리 방법을 구체적으로 소개하는 게시물을 공유해 주셨습니다: https://towardsdatascience.com/all-about-missing-data-handling- b94b8b5d2184
링크 설명 추가
해당 게시물은 영어로 작성되어 있으며, 회원가입 및 로그인을 하셔야 보실 수 있습니다.
————————————————————————————————————————————
점점 더 포괄적인 속성을 가진 데이터 세트 total_df를 보유한 후 이전 길이에 따라 훈련 세트와 테스트 세트로 다시 나뉩니다.
————————————————————————————————————————————
여기서는 훈련 세트와 테스트 세트의 비율이 8:2, 즉 4:1이라고 언급하는데, 이는 매우 일반적인 분할 비율입니다.
아마도 원저자는 test와 valid를 같은 것으로 간주했기 때문에 명명에 특별한 구별은 없었을 것입니다.
그러나 사실 이 두 개념은 완전히 동일하지는 않습니다(하지만 때로는 구별이 엄격하지 않은 경우도 있습니다). 여기서는 test_X와 test_y의 통일된 작성 방법을 사용합니다.
————————————————————————————————————————————
수입LGBM 회귀자 , Titanic 데이터 세트는 주로 분류 문제(승객의 생존 여부 예측)에 사용되지만 원 작성자는 여기서 이를 회귀 문제로 처리합니다. 초보자의 경우 간단하고 친숙한 데이터 세트와 동영상 설명이 포함된 튜토리얼을 선택하는 것이 더 쉬울 것이라고 생각했기 때문에 자세한 회귀 문제나 분류 문제에 대해 걱정하지 않았습니다. 이 과정에 능숙해지면 온라인에서 더 복잡하고 표준화된 데이터를 찾아 실습할 수 있습니다.
보충 학습 링크: "LGBMRegressor 매개변수 설정 lgbmclassifier 매개변수"
https://blog.51cto.com/u_12219/10333606
링크 설명 추가
(그나저나 이 글에는 LGBM 분류기가 있지 않나요? 작성자가 영상에서 회귀 문제 다루기를 구체적으로 언급한 이유는 무엇인가요?)
————————————————————————————————————————————
손실 함수, 즉 평가 지표인 RMSE는 평균 제곱근 오차(Root Mean Square Error)를 계산하는 Python 함수입니다.작을수록 좋다。
————————————————————————————————————————————
원저작자의 비디오 설명에 따라 작업 목표의 매개변수를 설정합니다.
구체적인 매개변수 이름과 의미, 권장값은 위 보충학습 포스팅 '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'가 있습니다.
Kimi의 방법은 시도한 후에도 여전히 오류를 보고하므로 책임을 져야 할 사람은 아마도 우리가 아닐 것입니다.
StackFlow의 마스터는 두 가지 솔루션을 제공합니다.
https://stackoverflow.com/questions/76895269/lgbmclassifier-fit-got-an-unexpected-keyword-argument-early-stopping-rounds
문
pip install을 사용하는 것이 가장 좋지만 conda install은 설치할 수 없는 것 같습니다.
그런데 소용이 없다는 걸 알게 됐는데... 계속 똑같은 오류가 나고, early_stopping_rounds도 인식하지 못하고, 삭제한 뒤에도 다음 매개변수 verbose도 인식하지 못하더군요...
이전 보충글에 따르면 매개변수 변경이 안되는 것 같습니다. 정보 업데이트가 늦어지는 것 같습니다...
————————————————————————————————————————————
검색 과정에서 오류가 발생하기 쉬운 지점도 발견했습니다. early_stopping_rounds의 최대 제한은 100인 것 같습니다.
https://blog.csdn.net/YangTinTin/article/details/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갖다:
————————————————————————————————————————————
마찬가지로 원래 UP도 사용되었습니다.xgboost 및 catboost최적의 매개변수를 찾기 위해 유사한 방법이 사용됩니다.
세 가지 다른 방법 사이의 주요 차이점은 선택된 매개변수 매개변수와 모델에 의해 지정된 함수 방법이라는 것을 아는 것은 어렵지 않습니다.
XGBoost:
XGBoost 결과:
————————————————————————————————————————————
캣부스트:
CatBoost 결과:
————————————————————————————————————————————
마지막으로 사용한K-겹 교차 검증최상의 결과를 얻으세요:
교차 검증은 기계 학습에서 일반적으로 사용되는 용어이기도 합니다.
def accuracy(y_true, y_pred):
return np.sum(y_true == y_pred)/len(y_true)
kf는 K-폴드 교차 검증을 구현하기 위한 scikit-learn 라이브러리의 도구인 KFold 객체입니다. KFold는 데이터 세트를 다음과 같이 나눕니다.n_splits 하위 집합, 각 하위 집합검증 세트로 교대로 사용, 나머지는 훈련 세트로 사용됩니다.
for train_index, kf.split(x)의 valid_index: 이 코드 줄은 KFold 객체를 반복하여 각 반복마다 두 개의 배열(train_index 및 valid_index)을 반환합니다.train_index에는 훈련에 사용되는 데이터 포인트의 인덱스가 포함되고, valid_index에는 검증에 사용되는 데이터 포인트의 인덱스가 포함됩니다. . 전체 세트 X, y에 대한 인덱스에 따라 매번 학습 세트와 검증 세트 데이터를 얻을 수 있습니다. 이 프로세스는 전체 수업을 방해하고 매번 몇 명의 학생을 무작위로 선택하고 그룹을 호출하는 것과 같습니다.
————————————————————————————————————————————
이제 또 다른 흔한 버그가 어떻게 발생했는지는 모르겠지만, Python이 다시 책임을 져야 하는지는 모르겠습니다. (X 및 Y 데이터 세트의 모양은 작성자의 이전 데이터 세트와 정확히 동일했기 때문에 논리적으로 나중에 이에 대한 다른 작업은 없을 것입니다...)
문제가 발생하면 두려워하지 말고 해결하세요! 이것에 대해서는 Kimi를 믿어야합니다! (참고로 제가 인턴하고 있는 인공지능 회사 직원들도 키미를 사용하고 있어서 키미는 상대적으로 신뢰도가 높고 무료입니다!!)
또 다른 오류가 발생하지 않도록 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
test_pred.shape 출력을 살펴보세요. 배열의 정사각형 모양을 보지 마세요. 모양이 418개의 요소로 구성된 1차원 배열로 보입니다.
Python에서 1차원 배열의 모양은 일반적으로 (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 모델 매개변수 조정 [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
문
(둘) 이 자동 인삼 조정 도구는 정말 강력합니다! 머신러닝과 딥러닝 매개변수 조정의 일상적인 사용을 완벽하게 충족할 수 있습니다! 초보자를 위한 필수 도구!: 영상 내용이 제가 따라한 시연 영상만큼 좋지는 않습니다. 실제 사례 없이 Optuna에 대해서만 간략하게 설명하고 있습니다.
https://www.bilibili.com/video/BV1Zs421K7Qj/?spm_id_from=333.788.recommend_more_video.6&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
문
하지만 이번 UP에서 소개한 책에는 관심이 많습니다. 경험이 부족하고 규칙을 찾는 것을 좋아하는 저와 같은 초보자에게는 보편적인 공식과 방향을 소개할 수 있는 가이드북이 꼭 있었으면 좋겠습니다.