편집 기록

편집 기록
  • 프로필 최준호님의 편집
    날짜2020.05.30

    정수인코딩한 것을 int 데이터들과 학습시키기 위해서는 어떻게 바꿔줘야 할까요?


    이미지

    현재 쇼핑몰 랭킹순위를 모델 시키는 것이 목표이고 학습을 시켜서 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]'
    
  • 프로필 nowp님의 편집
    날짜2020.05.30

    정수인코딩한 것을 int 데이터들과 학습시키기 위해서는 어떻게 바꿔줘야 할까요?


    이미지

    현재 쇼핑몰 랭킹순위를 모델 시키는 것이 목표이고 학습을 시켜서 rank가 어떻게 나올까를 하는게 최종 목표입니다. 현재 보이시는 범주 중에서 encoding name은 상품의 제목을 토큰화후 정수 인코딩 한 것입니다.

    현재 이상태에서 Linear Regression으로 모델학습 시켜주려고 하는데, 아무래도 정수 인코딩으로 인해 ValueError: could not convert string to float: [[1]] 와 같은 오류가 뜨게 됩니다.

    정수 인코딩한 것을 같이 학습시켜주기 위해선 어떻게 변환하여 모델을 돌려줘야 할까요 알려주시면 정말 감사하겠습니다.

  • 프로필 최준호님의 편집
    날짜2020.05.29

    정수인코딩한 것을 int 데이터들과 학습시키기 위해서는 어떻게 바꿔줘야 할까요?


    이미지

    현재 쇼핑몰 랭킹순위를 모델 시키는 것이 목표이고 학습을 시켜서 rank가 어떻게 나올까를 하는게 최종 목표입니다. 현재 보이시는 범주 중에서 encoding name은 상품의 제목을 토큰화후 정수 인코딩 한 것입니다.

    현재 이상태에서 Linear Regression으로 모델학습 시켜주려고 하는데 아무래도 정수 인코딩으로 인해 ValueError: could not convert string to float: [1] 와 같은 오류가 뜨게 됩니다

    정수 인코딩한 것을 같이 학습시켜주기 위해선 어떻게 변환하여 모델을 돌려줘야 할까요 알려주시면 정말 감사하겠습니다.