해결된 질문
작성
·
240
0
안녕하세요.
강의 잘 듣고 있습니다.
해당 문제 풀면서.... 이미 라벨인코딩이 되어있다는 것을 확인을 못하고
describe해 보고 std가 가장 높은 'choi'변수만 민맥스 스케일링을 하려고 했는데.. 오류가 발생해서요... 왜 발생하는건지 궁금합니다.
그리고 시험 때, 피처엔지니어링에서 오류 발생시 해당 절차를 건너뛰고
전처리만 하고 데이터 분할 -> 모델링으로 넘어가도 되는지.요... 성능은 떨어지겠지만 ㅠ...
<코드>
# 라이브러리 및 데이터 불러오기
import pandas as pd
x_train = pd.read_csv("X_train.csv")
x_test = pd.read_csv("X_test.csv")
y_train = pd.read_csv("y_train.csv")
pd.set_option('display.max_columns', None)
# EDA
print(x_train.shape, x_test.shape, y_train.shape) #(242, 14) (61, 14) (242, 2)
print(x_train.head())
print(x_test.head())
print(y_train.head()) # target: output
print(x_train.info())
print(x_train.describe())
# print(x_train.describe(include = 'object')) 범주형 없음
print(x_train.value_counts())
print(x_train.isnull().sum())
# 데이터 전처리(결측치, 필요없는 칼럼, ID처리)
x_train = x_train.drop('id', axis = 1)
test_id = x_test.pop('id')
# 피처엔지니어링(수치형: minmax)
from sklearn.preprocessing import MinMaxScaler
Scaler = MinMaxScaler()
x_train['chol'] = Scaler.fit_transform(x_train['chol'])
x_test['chol'] = Scaler.tranasform(x_test['chol'])
<오류>
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-39-3a5ef0b0d508> in <cell line: 31>()
29
30 Scaler = MinMaxScaler()
---> 31 x_train['chol'] = Scaler.fit_transform(x_train['chol'])
32 x_test['chol'] = Scaler.tranasform(x_test['chol'])
5 frames
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator, input_name)
900 # If input is 1D raise error
901 if array.ndim == 1:
--> 902 raise ValueError(
903 "Expected 2D array, got 1D array instead:\narray={}.\n"
904 "Reshape your data either using array.reshape(-1, 1) if "
ValueError: Expected 2D array, got 1D array instead:
array=[216. 199. 269. 205. 149. 196. 211. 131. 203. 126. 263. 248. 169. 261.
236. 229. 241. 254. 315. 221. 177. 232. 219. 160. 233. 341. 298. 229.
188. 212. 250. 326. 205. 293. 309. 212. 199. 255. 210. 239. 193. 274.
268. 264. 247. 222. 288. 564. 197. 303. 264. 276. 243. 187. 208. 233.
198. 177. 247. 246. 307. 220. 268. 295. 240. 302. 243. 303. 245. 256.
230. 141. 340. 149. 213. 223. 289. 354. 270. 342. 277. 231. 335. 206.
325. 201. 233. 209. 220. 353. 253. 330. 239. 212. 249. 201. 177. 266.
207. 224. 252. 166. 282. 243. 253. 222. 246. 157. 207. 213. 164. 306.
204. 281. 198. 244. 211. 227. 260. 266. 229. 258. 308. 249. 231. 313.
254. 209. 240. 269. 278. 335. 258. 289. 223. 240. 228. 286. 298. 261.
327. 216. 206. 249. 283. 223. 234. 360. 197. 257. 236. 394. 305. 172.
230. 286. 330. 318. 269. 265. 256. 167. 220. 217. 186. 184. 255. 211.
269. 319. 212. 215. 282. 234. 271. 236. 174. 271. 197. 288. 226. 219.
234. 225. 242. 294. 248. 304. 256. 221. 234. 309. 274. 299. 197. 265.
275. 244. 243. 300. 175. 274. 263. 218. 226. 275. 308. 254. 318. 290.
239. 175. 262. 302. 409. 197. 203. 225. 322. 192. 303. 177. 197. 234.
203. 185. 309. 200. 269. 270. 273. 258. 195. 267. 227. 233. 192. 321.
254. 196. 260. 214.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
답변 1
0
데이터프레임형태로 입력되어야하는데 1개라 시리즈 형태로 입력되어 그렇습니다. 핏_트랜스폼 괄호 안에
X_train[[‘chol’]]형태로 괄호를 두 개로 해봐주세요!