#text= text.replace("파이썬", "머신러닝").replace("분석기사", "분석을 위한") 에서 여러단어 변경 시 유의사항으로 앞에서 부터 실행돼서 파이썬부터 머신러닝으로 바꿔야 한다고 말씀하셨는데 앞에서 부터 실행되면 분석기사부터 바꿔야되는 거 아닌가요? 왜냐면 text = 빅데이터 분석기사 파이썬 공부 순이라서. 앞에서 부터 실행된다는게 분석기사부터 바뀌는게 아닌가 하는 생각이 들어서 여쭤봅니다. #text= text.replace("분석기사", "분석을 위한").replace("파이썬", "머신러닝") 으로 바꿔서 실행해보니 '빅데이터 분석을 위한 머신러닝 공부' 라는 값이 도출됩니다.
1987번 제 풀이가 선생님의 리스트 풀이와 비슷하다고 생각해서 제출을 해봤는데 시간 초과가 나는 것 같습니다. 이상하다고 생각해서 선생님께서 작성해주신 예시코드도 복붙해봤는데 똑같이 시간 초과가 나는 것 같아서요... 혹시 뭐가 문제일까요? 컴퓨터마다 시간이 달라서 그런걸까요?
안녕하세요 선생님. 백준 3085번 풀이2와 제 풀이가 비슷한 것 같은데 제 풀이는 틀린 것으로 나오는데 어떤 부분이 잘못됐는지 잘 모르겠습니다. 제가 어떤 부분을 놓치고 있는지 알려주시면 감사하겠습니다! import sys from itertools import combinations def input(): return sys.stdin.readline().rstrip() def get_max(i,j): global data, n ser1 = data[i] ser2 = [data[k][j] for k in range(n)] return max(count_max(ser1), count_max(ser2)) def count_max(ser): count = 0 bef = '.' for idx in range(len(ser)): if bef != ser[idx]: count = 1 else: count += 1 bef = ser[idx] return count n = int(input()) data = [] for _ in range(n): data.append(list(input())) dx = [0,1,-1,0] dy = [1,0,0,-1] cur_max = 0 for i in range(n): for j in range(n): if i == j: cur_max = max(cur_max, get_max(i, j)) for di, dj in zip(dx,dy): ni = i + di nj = j + dj if not ((0 <= ni < n) & (0 <= nj < n)): continue if (data[ni][nj] == data[i][j]): continue data[i][j], data[ni][nj] = data[ni][nj], data[i][j] cur_max = max(cur_max, get_max(i, j)) data[i][j], data[ni][nj] = data[ni][nj], data[i][j] print(cur_max)
안녕하세요, 강의 너무 잘 듣고 있습니다. 잘 따라가고 있던 와중 프론트 코드에 URL 상수를 지정하는 과정들을 거치고 UI가 있는 창에서 개발자 도구를 열어도 연결 완료 문구가 뜨지 않아 글 남깁니다. 저와 같은 문제로 질문 주신 커뮤니티의 다른 분께 프론트 파일과 주소를 남겨달라고 하셔서 메일로 프론트 파일과 주소를 보내드린 상태입니다. 한 번만 확인해 주신다면 감사드립니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 import pandas as pd train = pd.read _csv("data/customer_train.csv") test = pd.read _csv("data/customer_test.csv") # print(train.shape,test.shape) #2482 # print( train.info (), test.info ()) # print(train.isnull().sum()) # 결측값 존재함 # print(test.isnull().sum()) # 결측값 존재함 # 전처리 train = train.fillna(0) test =test.fillna(0) # print(train.isnull().sum()) # print(test.isnull().sum()) target = train.pop('성별') df= pd.concat([train,test]) df = pd.get_dummies(df) train = df.iloc[:len(train)] test = df.iloc[len(train):] print(train.shape,test.shape) # 모델 분리 및 검증 from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(train,target,test_size=0.2,random_state=22) # print(X_tr.shape,X_val.shape,y_tr.shape,y_val.shape) # 모델 학습 from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=22) rf.fit (X_tr,y_tr) pred = rf.predict_proba(X_val) # 결과 pred = rf.predict_proba(test) submit = pd.DataFrame({'pred':pred[:,1]}) submit.to _csv('result.csv',index=False) print( pd.read _csv('result.csv').head()) print( pd.read _csv('result.csv').shape) #2482 이 식으로 풀어도 될까요??
from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state = 0, max_depth = 3, n_estimators = 200) model.fit(X_tr, y_tr) pred_proba = model.predict_proba(X_val) from sklearn.metrics import roc_auc_score print(pred_proba) print(roc_auc_score(y_val, pred_proba[:, 1])) 안녕하세요, 모델학습 후 검증하려고 하니 print(roc_auc_score(y_val, pred_proba[:, 1]))에서 아래와 같은 오류가 발생합니다. list indices must be integers or slices, not tuple 혹시 pred_proba의 형태에 문제가 있어서 그러나 출력해봤더니 아래처럼 array가 2개가 뜨는데 원래 출력되던 값이랑 다른 것 같기도 한데 어떤 부분이 잘못된걸까요..? [array([[6.17771951e-04, 3.90720727e-04, 5.61044129e-04, ..., 1.88014875e-05, 2.71602426e-05, 9.26113606e-05], [4.72241735e-04, 7.55194719e-04, 3.70085375e-04, ..., 7.58005053e-06, 2.24283166e-05, 3.95537961e-05], [2.06135825e-05, 1.04454196e-05, 1.96540881e-06, ..., 2.93436306e-05, 1.84382330e-05, 6.98070487e-05], ..., [2.26718012e-05, 2.39307053e-05, 1.96540881e-06, ..., 3.02043842e-05, 1.54553261e-05, 6.62548451e-05], [1.51536674e-05, 2.15648698e-05, 2.06815630e-06, ..., 4.15875993e-05, 3.06270026e-05, 3.26545900e-05], [2.84102759e-05, 1.47138847e-05, 6.29396294e-06, ..., 3.17093190e-05, 1.71020727e-05, 4.92247989e-05]]), array([[0.05156594, 0.94843406], [0.0402204 , 0.9597796 ], [0.54197093, 0.45802907], ..., [0.53420482, 0.46579518], [0.5344612 , 0.4655388 ], [0.53436829, 0.46563171]])] @ 위 문제를 기존에는 y_train의 'ID' 값을 drop하지 않았다가, y_train의 'ID' 값을 drop하니 해결되었는데 그것과 관련이 있는 것일까요? 그리고, 'ID'값을 제거하려고 할 때에는 X_train, y_train, X_test 세 데이터 프레임 모두의 'ID'값을 반드시 제거해야 하는 것인가요?
검증 데이터 분리 시, X_tr ~ = train_test_split( train.drop('output', axis=1) 에서 전단계에서 데이터 전처리 할 때, 이미 train에서 output 드랍하고 train에 저장했는데 (train = train.drop('output')) 검증 데이터 분리 작성 시 다시 drop 해주는 이유가 있나요? X_tr ~ = train_test_split( train) 이렇게 바로 하면 안되나요?
안녕하세요! 명목형 자료의 인코딩 시 Test 데이터에만 있는 Unique 값이 있을 수 있어 데이터를 합치고 인코딩 한 후에 다시 분리하는 것으로 이해하였습니다. 예시에 사용된 원핫인코딩의 pd.get_dummies와 달리 라벨인코딩의 경우 사이킷런의 인코더를 이용하는데, 이에 따라 fit_transform, transform으로 나누어 진행하는 것 같습니다. 질문은! 라벨인코딩의 경우에 Train, Test 데이터를 합쳐서 인코딩 할 때 fit_transform을 사용하면 될까요?
안녕하세요! 결측치 처리 시에 아래와 같이 수치형 컬럼의 경우 Train 데이터의 평균, 중앙값을 Test 데이터 결측치 처리에 사용한 반면, 명목형 컬럼의 경우 Test 데이터 결측치 처리 시에 Test 데이터의 최빈값을 이용한 이유가 궁금합니다! 통상적으로 이렇게 진행되는 것인지, 아니면 해당 데이터셋의 경우 Train 데이터와 Test 데이터의 최빈값이 동일해서 단순히 이렇게 처리된 것인지 궁금합니다! # X_train데이터 X_train['workclass'] = X_train['workclass'].fillna(X_train['workclass'].mode()[0]) X_train['native.country'] = X_train['native.country'].fillna(X_train['native.country'].mode()[0]) X_train['occupation'] = X_train['occupation'].fillna("X") X_train['age'] = X_train['age'].fillna(int(X_train['age'].mean())) X_train['hours.per.week'] = X_train['hours.per.week'].fillna(X_train['hours.per.week'].median()) # X_test데이터 X_test['workclass'] = X_test['workclass'].fillna(X_test['workclass'].mode()[0]) X_test['native.country'] = X_test['native.country'].fillna(X_test['native.country'].mode()[0]) X_test['occupation'] = X_test['occupation'].fillna("X") X_test['age'] = X_test['age'].fillna(int(X_train['age'].mean())) X_test['hours.per.week'] = X_test['hours.per.week'].fillna(X_train['hours.per.week'].median())
조건 대륙('continent')별 맥주 소비량(‘beer_servings’)의 평균을 계산하고, 평균이 가장 큰 대륙을 찾으시오. 1번에서 찾은 대륙에서 맥주 소비량이 5번째로 많은 국가(‘country’)의 맥주 소비량을 구하시오. 이 문제를 풀 때 정답과는 조금 다르게 풀었는데 단순히 답만 나오면 상관 없나요 ? 선생님이 풀이해주신 걸 보면, 별도의 변수를 만들어 대입 후 비교를 하셨는데, 저같은 경우는 데이터프레임에 바로 대입을 하고, 1번 조건이 Europe인 것을 확인 후 주석처리를 했습니다. # df = df.groupby('continent').mean('beer_servings') # df = df.sort_values('beer_servings',ascending = 0) # 평균 가장 큰 대륙 : Europe cond = df['continent'] == 'Europe' df = df.sort_values('beer_servings', ascending = 0) print(df.iloc[4, 1]) 이후 조건 변수에 대입 후 313 답을 도출했는데, 이렇게 풀면 틀릴까요 ?
안녕하세요 선생님, 강의 잘 듣고 잇습니다. 머신러닝 분석 절차는.. (1) train 데이터를 tr과 val로 분리 (2) tr 데이터로 학습 (3) val 데이터로 성능평가 (4) 그리고 test 데이터로 예측결과 제출 위 순서인 것으로 이해했는데, (4)번에서 train(tr+val) 데이터가 아닌 tr 데이터로 학습한 것을 바탕으로 예측한 결과를 제출하는건가요? train(tr+val) data로 다시 학습한 후에 예측하지 않아도 되는 것인지 궁금합니다.
지금 데이터를 보면 Roof 데이터에 수치형과 범주형이 동시에 존재하는데 저는 범주형 데이터를 라벨인코딩 진행 후 , 데이터분할, 랜포돌림, 그리고 마지막으로 예측하려고하니 다음과 같이 나왔습니다. 에러 내용을 보니... test데이터에 존재하는 object 때문에 이러한 문제가 발생하는 것 같은데... 이처럼 하나의 열에 수치형, 범주형이 동시에 존재하면 이 경우에는 원-핫인코딩을 쓰는게 더 나을까요?