Как вписать строку в линейную регрессию? - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок в машинном обучении, мои данные должны отображать строку и цену. CSV-файл:

,restaurent names,cost
0,Faasos,187.76
1,Faasos,126.8
2,Hak Cafe,84.5
3,Hak Cafe,84.5
4,Motel,336.0
5,McDonald's,234.0
6,pizaa,208.0
7,Taco Bell,255.0

код:

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv("file.csv")
data.groupby('restaurent names').mean().reset_index()

X = data["restaurent names"]
y = data["cost"]

lr = LinearRegression()
lr.fit(X,y)

ошибка, с которой я сталкиваюсь:

Traceback (most recent call last):
  File "main.py", line 14, in <module>
    lr.fit(X,y)
 in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 'Faasos'

любой способ исправить эту ошибку?

1 Ответ

0 голосов
/ 22 февраля 2020

Вы должны фактически преобразовать строки в категории, которые будут заменены целыми числами, представляющими каждую категорию, для чего вы можете использовать кодировщик меток

# Import label encoder 
from sklearn import preprocessing 
# label_encoder object knows how to understand word labels. 
label_encoder = preprocessing.LabelEncoder() 
# Encode labels in column 'restaurent names'. 
df['restaurent names']= label_encoder.fit_transform(df['restaurent names']) 
df['restaurent names'].unique() 

Или вы можете использовать get_dummies () для преобразования каждой категории в столбцы логического типа

new_data = pd.get_dummies(old_data)
...