Forum >> Programmazione Python >> Calcolo scientifico >> Calcolo regressione S&P

Pagina: 1

Ciao a tutti, stavo facendo un esercizio dell'autore "Python per la data scienze".

Facendolo su Spider l'esercizio si conclude correttamente producendo il grafico dello S&P.

Con lo stesso codice, Python mi dà diversi Warning e conclude con un errore.




Ecco il codice:

import numpy, pandas as pd
import matplotlib, matplotlib.pyplot as plt
import sklearn.linear_model as lm





# Get the data
sap = pd.read_csv("sapXXI.csv").set_index("Date")





# Select a "linearly looking" part
sap.index = pd.to_datetime(sap.index)
sap_linear = sap.ix[sap.index > pd.to_datetime('2010-01-01')]





# Prepare the model and fit it
olm = lm.LinearRegression()
x = numpy.array([x.toordinal() for x in sap_linear.index])[:, numpy.newaxis]
y = sap_linear['Close']
olm.fit(x, y)





# Predict values
yp = [olm.predict(x.toordinal())0 for x in sap_linear.index]





# Evaluate the model
olm_score = olm.score(x, y)





# Select a nice plotting style
matplotlib.style.use("ggplot")





# Plot both data sets
plt.plot(sap_linear.index, y)
plt.plot(sap_linear.index, yp)





# Add decorations


plt.title("OLS Regression")
plt.xlabel("Year")
plt.ylabel("S&P 500 (closing)")
plt.legend(["Actual", "Predicted"], loc="lower right")
plt.annotate("Score=%.3f" % olm_score, 
             xy=(pd.to_datetime('2010-06-01'), 1900))





plt.savefig("../images/sap-linregr.pdf")
come dicevo la shell propone warning e l'errore che blocca l'esecuzione:




Warning (from warnings module):
File "C:\Users\NicolaAppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\externals\joblib\externals\cloudpickle\cloudpickle.py", line 47
import imp
DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses


Warning (from warnings module):
File "C:\Users\Nicola\Documents\Learning Machine\sap-linregr.py", line 10
sap_linear = sap.ix[sap.index > pd.to_datetime('2010-01-01')]
DeprecationWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing


See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
Traceback (most recent call last):
File "C:\Users\Nicola\Documents\Learning Machine\sap-linregr.py", line 19, in <module>
yp = [olm.predict(x.toordinal())0 for x in sap_linear.index]
File "C:\Users\Nicola\Documents\Learning Machine\sap-linregr.py", line 19, in <listcomp>
yp = [olm.predict(x.toordinal())0 for x in sap_linear.index]
File "C:\Users\NicolaAppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\linear_model\base.py", line 213, in predict
return self._decision_function(X)
File "C:\Users\NicolaAppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\linear_model\base.py", line 196, in _decision_function
X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
File "C:\Users\NicolaAppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\utils\validation.py", line 540, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got scalar array instead:
array=733776.
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.





Potete aiutarmi?




Grazie.


--- Ultima modifica di nicola761 in data 2018-10-08 21:57:19 ---
quando dici che con Python ti restituisce l'errore, indenti quando usi "IDLE" di default credo....

se così fosse mi viene da consigliarti di controllare se IDLE e Spider usino due versioni diverse?

Tendenzialmente perché spider/anaconda (immagino) utilizza un certo environment con certe impostazioni, mentre il tuo "altro python" (qualunque sia) è un'altra cosa. L'argomento è molto lungo e i casi possibili sono migliaia e non vale la pena di mettersi a rintracciare l'origine di questo specifico problema (domani ne avrai un'altro, e così via). La soluzione è avere ben chiaro in testa come funziona il modello di esecuzione di uno script python, come è fatto python, come si installa, come importa i pacchetti, che cos'è un environment, eccetera. Su windows. Ho scritto una lunga guida (link in firma) su questi argomenti, ti suggerisco di leggerla. Se invece il tuo scopo è solo quello di eseguire certi compiti in un certo contesto, non ti preoccupare e continua a usare spyder che va benissimo per quello che devi fare...


Pagina: 1



Esegui il login per scrivere una risposta.