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차원으로 변환하시면 될 것입니다.
비슷한 경우에 대한 설명을 확인할 수 있는 기존 게시물은 다음과 같습니다:
위 링크에서 여러분이 원하는 형태로 데이터를 변환하는 방법에 대한 예시를 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
2회 기출유형(작업형1) Warning
0
11
1
describe()
0
30
2
수강기간 연장 문의
0
47
2
빅데이터분석기사 실기 인코딩
0
52
2
수강기간 연장문의
0
60
2
수강 기간 연장 문의 드립니다.. 부탁드립니다 ㅠㅠ
0
49
2
작업형2와 3의 목적
0
40
1
기출9회(작업형 1의 2번문제)
0
39
2
수강 기간 연장 문의 드립니다.
0
55
2
수강 연장 문의드립니다
0
65
2
수강 연장 문의드립니다.
0
51
2
재결제 가능할까요...
0
59
1
비전공자 빅분기 실기 공부방법
1
68
2
강의일시정지 요청합니다
0
61
2
강의 연장 가능할까요 ㅠㅠ
0
58
2
수강 연장 문의드립니다.
0
63
2
수강기간 연장 가능 여부 문의드립니다.
0
83
1
수강 기간 연장 가능 여부 문의드립니다
0
85
2
강의 업데이트
0
78
2
수강 연장 문의드립니다.
0
100
2
강의 연장 문의
0
74
2
수강 신청 연장 문의드립니다.
0
87
2
작업형 1번문제... 환경관련
0
67
2
12회 기출은 언제 업데이트 될까요??
1
89
2





