shape 결과에 대한 문의
작업형2 마지막에 제출하기 위해서 shape로 형태를 확인하자나요. 강사님 결과는 (903,) 이렇게 뜨는데 저는 (903,1) 이라고 뜹니다. 제가 뭔가 잘못친걸까요. 이렇게 제출되면 0점 처리인가요?
답변 2
0
시리즈와 데이터 프레임 차이인데
데이터 불러온 이후 작업 코드만 보여주시겠어요? 어디선가 달리 작업한 것이 있을것 같은데
보통은 데이터 분할 할때 X는 데이터프레임으로 넣고 target(y)는 시리즈 형태로 넣는데 이때 아마 데이터 프레임형태로 들어갔을 가능성이 커요!
0
# 데이터 불러오기
import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/10_2/gas_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/10_2/gas_test.csv")
print(train.shape)
cond = train['총가스사용량'] == 0
print(sum(cond))
train = train.drop(train[cond].index)
print(train.shape)
#print(set(train['시군구명']) == set(test['시군구명']))
target = train.pop("총가스사용량")
print(train.shape)
print(test.shape)
train = pd.get_dummies(train)
test = pd.get_dummies(test)
print(train.shape)
print(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=0)
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state=0)
rf.fit(X_tr, y_tr)
pred_rf = rf.predict(X_val)
import lightgbm as lgb
lg = lgb.LGBMRegressor(random_state=0, verbose=-1)
lg.fit(X_tr, y_tr)
pred_lg = lg.predict(X_val)
from sklearn.metrics import root_mean_squared_error
rmse_rf = root_mean_squared_error(y_val, pred_rf)
rmse_lg = root_mean_squared_error(y_val, pred_lg)
print(rmse_rf)
print(rmse_lg)
pred_test = rf.predict(test)
result = pd.DataFrame({"pred":pred_test})
print(result)
print(result.shape)
result.to_csv("result.csv", index=False)
print(pd.read_csv("result.csv"))
print(pd.read_csv("result.csv").shape)
0
print(pd.read_csv("result.csv").shape)이 코드에서 1이 적히는건 다시 데이터 프레임으로 불러왔기에 정상입니다.
아래 코드에서는 1이 안나올거에요!
print(pred_test.shape)0
그럼 pred의 shape은 (xxx, ) 이렇게 뜨고, result와 result.csv 의 shape은 (xxx,1) 이렇게 뜨는게 정상이란 얘기신거죠?
0
안녕하세요, 인프런 AI 인턴입니다. sexyguybhc님.
질문 주신 내용에 대해 설명드리겠습니다. (903,)와 (903, 1)의 차이는 다차원 배열에서의 형태를 의미합니다. (903,)는 1차원 배열을 나타내며, (903, 1)는 2차원 배열로, 903개의 행과 1개의 열을 가진 배열을 의미합니다. 문제 자체로는 데이터를 1차원으로 제출하는 것이 요구되었다면, 2차원으로 제출하는 경우 문제가 될 수 있습니다.
해결 방법
제출할 데이터프레임에서 열의 차원을 줄이는 작업이 필요합니다. 아래의 방법을 참고하세요:
데이터 프레임을 1차원 시리즈로 변환하기:
result = result.squeeze()데이터프레임에서 첫 번째 열만 가져오기:
result = result.iloc[:, 0]
이 방법 중 하나를 사용하여 데이터를 1차원으로 변환하시면 될 것입니다.
비슷한 경우에 대한 설명을 확인할 수 있는 기존 게시물은 다음과 같습니다:
위 링크에서 여러분이 원하는 형태로 데이터를 변환하는 방법에 대한 예시를 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수강연장요청 문의
0
11
1
아무래도 다음 시험 연장은 어렵겠죠?
0
56
2
빅분기 12회 결과 관련 문의
0
78
1
책이랑 강의랑 순서나 예제가 다른것 같네요
0
65
2
수강연장 문의
0
67
2
재검토 요청 방법 좀 알려주셔요...-.-;;
0
93
2
12회 실기 질문(작업형 2)
0
79
2
뒤로가기 버튼 같은 것이 있나요?
0
53
1
강의 연장 문의
0
78
2
출력값 질문
0
57
2
수업노트가 어디에 있나요?
0
49
1
실기시험 제출관련
0
211
3
6.20 작업형 2 과적합
0
209
3
코딩팡 장업형2 베이스 라인 인코딩 종류 질문
0
69
2
로지스틱회귀, 회귀
0
59
2
회귀 문제를 풀때 질문입니다.
0
66
1
불균형 처리 후 성능이 더 낮아졌다면,
0
76
2
실기 체험 제2유형 에러 문의
0
76
1
LIGHTGBM 으로 하면 pred값이 소수점 6자리까지 나오는게 맞나요
0
66
2
3번문제 등분산 가정
0
58
2
작업형3 target 형 변환 질문
0
46
2
[작업형1] 연습문제 섹션1 ~ 10 의 section4
0
65
3
원핫인코딩과 레이블 인코딩에서 concat
0
70
2
제2유형 질문입니다.
0
58
2





