Olá, estou com problemas no ultimo exercicio da Aula 01 que pede para prever a bilheteria de um filme dado o seguinte atributo:
zootopia = [0,0,0,0,0,0,0,0,1,1,1,0,1,145.5170642,3.451632127]
modelo.predict([zootopia])
Mesmo rodando o próprio código da solução dada pelo professor, o python me retorna um erro:
ValueError Traceback (most recent call last)
<ipython-input-93-415e105da24a> in <module>()
1 zootopia = [0,0,0,0,0,0,0,0,1,1,1,0,1,145.5170642,3.451632127]
----> 2 modelo.predict([zootopia])
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\base.py in predict(self, X)
254 Returns predicted values.
255 """
--> 256 return self._decision_function(X)
257
258 _preprocess_data = staticmethod(_preprocess_data)
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\base.py in _decision_function(self, X)
239 X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
240 return safe_sparse_dot(X, self.coef_.T,
--> 241 dense_output=True) + self.intercept_
242
243 def predict(self, X):
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\extmath.py in safe_sparse_dot(a, b, dense_output)
138 return ret
139 else:
--> 140 return np.dot(a, b)
141
142
ValueError: shapes (1,15) and (1,) not aligned: 15 (dim 1) != 1 (dim 0)
O código que usei:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np
filmes_dt = pd.read_csv('datasets/regressao_linear_alura.csv')
amostra = filmes_dt.sample(n=200)
X = amostra['Investimento (em milhoes)']
Y = amostra['Bilheteria (pessoas)']
print(len(filmes_dt))
# Visualização de Dados
plt.scatter(X,Y)
plt.show()
filmes_investimento = filmes_dt['Investimento (em milhoes)']
filmes_bilheteria = filmes_dt['Bilheteria (pessoas)']
#Separação dos dados em treino e teste(split padrão de 0.25)
treino, teste, treino_marcacoes, teste_marcacoes = train_test_split(filmes_investimento, filmes_bilheteria)
#Reorganizando dados em vetor de colunas
treino = np.array(treino).reshape(len(treino), 1)
teste = np.array(teste).reshape(len(teste), 1) #reshape(num do array, num de colunas)
modelo = LinearRegression()
modelo.fit(treino,treino_marcacoes)
zootopia = [0,0,0,0,0,0,0,0,1,1,1,0,1,145.5170642,3.451632127]
modelo.predict([zootopia])
Ao reduzir os itens do dicionario "zotopia" para 1, o código funciona. Ex:
zootopia = [145.5170642]