Forum
>>
Programmazione Python
>>
Calcolo scientifico
>>
Calcolo regressione S&P
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da nicola761 |
2018-10-08 21:42:15 - Calcolo regressione S&P
|
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 --- |
|
Scritto da pypy pypy |
2018-10-08 22:04:53 - Re: Calcolo regressione S&P
|
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? |
|
Scritto da RicPol |
2018-10-09 13:06:08 - Re: Calcolo regressione S&P
|
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...
https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
Pagina: 1
Esegui il login per scrivere una risposta.