현재 쇼핑몰 랭킹순위를 모델 시키는 것이 목표이고 학습을 시켜서 rank가 어떻게 나올까를 하는게 최종 목표입니다. 현재 보이시는 범주 중에서 encoding name은 상품의 제목을 토큰화후 정수 인코딩 한 것입니다.
현재 이상태에서 Linear Regression으로 모델학습 시켜주려고 하는데,
아무래도 정수 인코딩으로 인해 ValueError: could not convert string to float: [[1]]
와 같은 오류가 뜨게 됩니다.
정수 인코딩한 것을 같이 학습시켜주기 위해선 어떻게 변환하여 모델을 돌려줘야 할까요 알려주시면 정말 감사하겠습니다.
import pandas as pd
from sklearn.preprocessing import PowerTransformer
from sklearn.compose import make_column_transformer
from sklearn.linear_model import LinearRegression
데이터 불러오기 및 정규화
train_df = pd.read_csv("/정수화된거 추가2.csv",encoding='UTF-8')
test_df = pd.read_csv("/정수화된거 추가2_test.csv",encoding='UTF-8')
print(train_df.info())
search_df = train_df[(train_df['price']==0) & (train_df['review']==0) & (train_df['buy']==0) & (train_df['buy_date']==0)]
train_df = train_df.drop(search_df.index, axis=0)
search_df = test_df[(test_df['price']==0) & (test_df['review']==0) & (test_df['buy']==0) &(test_df['buy_date']==0)]
test_df = test_df.drop(search_df.index, axis=0)
x_train_df = train_df.drop(['id', 'rank'], axis=1)
x_test_df = test_df.drop(['id', 'rank'], axis=1)
y_train_df = train_df['rank']
y_test_df = test_df['rank']
print(x_train_df.head())
x_train = transformer.transform(x_train_df)
x_test = transformer.transform(x_test_df)
y_train = y_train_df.to_numpy()
y_test = y_test_df.to_numpy()
---------------------------여기서부터 오류 난 코드입니다------------------------------------
model = LinearRegression()
model.fit(x_train, y_train)
#모델 검증
print(model.score(x_test, y_test)) #0.5462414358589345
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-29-fb4f716a55ea> in <module>
1 model = LinearRegression()
2
----> 3 model.fit(x_train, y_train)
4
5 ##########모델 검증
C:\Anaconda3\envs\venv\lib\site-packages\sklearn\linear_model\base.py in fit(self, X, y, sample_weight)
456 n_jobs_ = self.n_jobs
457 X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],
--> 458 y_numeric=True, multi_output=True)
459
460 if sample_weight is not None and np.atleast_1d(sample_weight).ndim > 1:
C:\Anaconda3\envs\venv\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
754 ensure_min_features=ensure_min_features,
755 warn_on_dtype=warn_on_dtype,
--> 756 estimator=estimator)
757 if multi_output:
758 y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,
C:\Anaconda3\envs\venv\lib\site-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, warn_on_dtype, estimator)
525 try:
526 warnings.simplefilter('error', ComplexWarning)
--> 527 array = np.asarray(array, dtype=dtype, order=order)
528 except ComplexWarning:
529 raise ValueError("Complex data not supported\n"
C:\Anaconda3\envs\venv\lib\site-packages\numpy\core\_asarray.py in asarray(a, dtype, order)
83
84 """
---> 85 return array(a, dtype, copy=False, order=order)
86
87
ValueError: could not convert string to float: '[1]'