import pandas as pd
import numpy as np
import re
import nltk
nltk.download('omw-1.4')
nltk.download('wordnet')
from nltk.corpus import stopwords
from nltk.tokenize import word\_tokenize
from nltk.stem import WordNetLemmatizer
from sklearn.feature\_extraction.text import TfidfVectorizer
from sklearn.model\_selection import KFold
from sklearn.utils.class\_weight import compute\_class\_weight
from sklearn.svm import SVC
from sklearn.metrics import f1\_score
from tqdm import tqdm

# Set seed value
np.random.seed(42)

# Load data
train\_df = pd.read\_csv('train.csv')
test\_df = pd.read\_csv('test.csv')

# Compute class weights
class\_weights = compute\_class\_weight(class\_weight='balanced', classes=np.unique(train\_df['label']), y=train\_df['label'])

# Define text pre-processing functions
def preprocess\_text(text):
 # Remove non-alphabetic characters
 text = re.sub(r'[^a-zA-Z\s]', '', text)
 # Convert to lowercase
 text = text.lower()
 # Tokenize
 tokens = word\_tokenize(text)
 # Remove stopwords
 tokens = [token for token in tokens if token not in stopwords.words('english')]
 # Lemmatize
 lemmatizer = WordNetLemmatizer()
 tokens = [lemmatizer.lemmatize(token) for token in tokens]
 # Join tokens back into a string
 text = ' '.join(tokens)
 return text

# Preprocess train and test text data with progress bar
train\_df['text'] = tqdm(train\_df['text'].apply(preprocess\_text))
test\_df['text'] = tqdm(test\_df['text'].apply(preprocess\_text))

# Define KFold cross-validation with progress bar
kf = tqdm(KFold(n\_splits=5, shuffle=True, random\_state=42))

# Define TF-IDF vectorizer
tfidf = TfidfVectorizer()

# Initialize F1 scores
f1\_scores = []

# Train and evaluate model for each fold with progress bar
for fold, (train\_index, val\_index) in enumerate(kf.split(train\_df)):

 # Get train and validation data
 X\_train, y\_train = train\_df.iloc[train\_index]['text'], train\_df.iloc[train\_index]['label']
 X\_val, y\_val = train\_df.iloc[val\_index]['text'], train\_df.iloc[val\_index]['label']

 # Compute TF-IDF features
 X\_train\_tfidf = tfidf.fit\_transform(X\_train)
 X\_val\_tfidf = tfidf.transform(X\_val)

 # Train SVM model with class weights
 svm = SVC(class\_weight={i: w for i, w in enumerate(class\_weights)}, kernel='linear', random\_state=42)
 svm.fit(X\_train\_tfidf, y\_train)

 # Evaluate on validation set
 y\_val\_pred = svm.predict(X\_val\_tfidf)
 f1 = f1\_score(y\_val, y\_val\_pred, average='weighted')
 f1\_scores.append(f1)

 # Save predictions on test set for this fold
 X\_test\_tfidf = tfidf.transform(test\_df['text'])
 y\_test\_pred = svm.predict(X\_test\_tfidf)
 test\_df[f'fold{fold+1}'] = y\_test\_pred

 # Update progress bar and print F1 score
 kf.set\_description(f'Fold {fold+1} F1 score: {f1:.4f}')
 kf.update()

# Compute average F1 score
print(f'Average F1 score: {np.mean(f1\_scores):.4f}')

# Ensemble predictions
#Ensemble predictions from all folds
test\_df['label'] = test\_df[[f'fold{fold+1}' for fold in range(5)]].mode(axis=1)[0]

#Save predictions to file
test\_df[['id', 'label']].to\_csv('./0316\_test.csv', index=False)

print("Ensemble predictions completed.")

#Done!

at this code Just let me see the progress bar on this whole code.
엠포트 판다를 PD로numpy를 np로 임포트import reimport nltknltk.download('omw-1.4')nltk.download('wordnet')nltk.corpus에서 중지어 가져오기from nltk.tokenize import word\_tokenizenltk.stem에서 WordNetLemmatizer를 가져옵니다.sklearn.feature\_extraction.text에서 TfidfVectorizer를 가져옵니다.sklearn.model\_selection에서 KFold를 가져옵니다.sklearn.utils.class\_weight에서 compute\_class\_weight를 가져옵니다.sklearn.svm에서 SVC를 가져옵니다.sklearn.metrics에서 F1\_score 가져오기tqdm에서 tqdm 가져오기# 시드 값 설정np.random.seed(42)# 데이터 로드train\_df = pd.read\_csv('train.csv')test\_df = pd.read\_csv('test.csv')# 클래스 가중치 계산class\_weights = compute\_class\_weight(class\_weight='balanced', classes=np.unique(train\_df['label']), y=train\_df['label'])# 텍스트 전처리 함수 정의def preprocess\_text(text): # 알파벳이 아닌 문자 제거 text = re.sub(r'[^a-zA-Z\s]', '', text) # 소문자로 변환 text = text.lower() # 토큰화 tokens = word\_tokenize(text) # 중지어 제거 토큰 = [토큰이 stopwords.words('english')에 없는 경우 토큰의 토큰에 대한 토큰] # 렘매타이저 lemmatizer = WordNetLemmatizer() 토큰 = [lemmatizer.lemmatize(token) for token in tokens] # 토큰을 다시 결합합니다. # 토큰을 다시 문자열로 조인 text = ' '.join(tokens) 텍스트 반환# 진행률 표시줄을 사용하여 훈련 및 테스트 텍스트 데이터 전처리train\_df['text'] = tqdm(train\_df['text'].apply(preprocess\_text))test\_df['text'] = tqdm(test\_df['text'].apply(preprocess\_text))# 진행률 표시줄로 KFold 교차 유효성 검사 정의하기kf = tqdm(KFold(n\_splits=5, shuffle=True, random\_state=42))# TF-IDF 벡터라이저 정의tfidf = TfidfVectorizer()# F1 점수 초기화F1\_scores = []# 진행률 표시줄을 사용하여 각 폴드에 대한 모델 훈련 및 평가for fold, (train\_index, val\_index) in enumerate(kf.split(train\_df)): # 훈련 및 검증 데이터 가져오기 X\_train, y\_train = train\_df.iloc[train\_index]['text'], train\_df.iloc[train\_index]['label'] X\_val, y\_val = train\_df.iloc[val\_index]['text'], train\_df.iloc[val\_index]['label'] # TF-IDF 기능 계산 X\_train\_tfidf = tfidf.fit\_transform(X\_train) X\_val\_tfidf = tfidf.transform(X\_val) # 클래스 가중치로 SVM 모델 훈련 svm = SVC(class\_weight={i: w for i, w in enumerate(class\_weights)}, kernel='linear', random\_state=42) svm.fit(X\_train\_tfidf, y\_train) # 유효성 검사 집합에서 평가 y\_val\_pred = svm.predict(X\_val\_tfidf) F1 = F1\_score(y\_val, y\_val\_pred, average='weighted') f1\_scores.append(f1) # 이 폴드에 대한 테스트 세트에 예측 저장 X\_test\_tfidf = tfidf.transform(test\_df['text']) y\_test\_pred = svm.predict(X\_test\_tfidf) test\_df[f'fold{fold+1}'] = y\_test\_pred # 진행률 표시줄 업데이트 및 F1 점수 인쇄 kf.set\_description(f'접기 {접기+1} F1 점수: {f1:.4f}') kf.update()# 평균 F1 점수 계산print(f'평균 F1 점수: {np.mean(f1\_scores):.4f}')# 앙상블 예측#모든 폴드에서 예측 앙상블하기test\_df['label'] = test\_df[[f'fold{fold+1}' for fold in range(5)]].mode(axis=1)[0]#파일에 예측 저장test\_df[[['id', 'label']].to\_csv('./0316\_test.csv', index=False)print("앙상블 예측 완료.")#완료!이 코드에서 전체 코드의 진행률 표시줄을 확인해보세요.