2017-05-24 5 views
-1

Ayant de la difficulté à comprendre les erreurs et à trouver une solution aux erreurs. Je suis coincé. Je suis un tutoriel sur https://pythonprogramming.net/forecasting-predicting-machine-learning-tutorial pour l'apprentissage automatique et la régression linéaire pas si difficile. J'ai essayé de changer de liste pour qu'elle soit immuable, mais je pense que la difficulté de suivre est que les données que je collectionne, semblent être très différentes des données avec lesquelles ce tutoriel fonctionne. J'essaie d'utiliser mes propres données. Vous pouvez comparer les codes de ce site au code ici. Qu'est-ce que je fais mal? Comment puis-je surmonter cet obstacle?Python machine apprentissage linéaire régression numpy liste erreur

import csv 
import numpy as np 
import pandas as pd 
from sklearn import preprocessing, cross_validation, svm 
from sklearn.linear_model import LinearRegression 
import matplotlib.pyplot as plt 
from matplotlib import style 
import datetime 
import math 

style.use('ggplot') 

df = {} 

bid = [] 
btemp = [] 
ask = [] 
atemp = [] 
low = [] 
high = [] 
close = [] 

file=open("C:/documents/EURUSD.csv", "r") 
reader = csv.reader(file) 

for line in reader: 
t=line[0],line[1],line[2],line[3],line[4],line[5],line[6],line[7],line[8] 
    btemp = line[2] + line[3] 
    bid.append(btemp) 
    atemp = line[4] + line[5] 
    ask.append(atemp) 
    low.append(line[6]) 
    high.append(line[7]) 
    close.append(line[8]) 

bid.pop(0) 
ask.pop(0) 
low.pop(0) 
high.pop(0) 
close.pop(0) 

nBid = [float(i) for i in bid] 
nAsk = [float(i) for i in ask] 
nHigh = [float(i) for i in high] 
nLow = [float(i) for i in low] 
nClose = [float(i) for i in close] 

df['nClose'] = nClose 

diffHighLow = [(x1 - x2) for (x1, x2) in zip(nHigh, nLow)] 
sumBidAsk = [x1 + x2 for (x1, x2) in zip(nBid, nAsk)] 
nSumBidAsk = [] 
for a in sumBidAsk: 
    aTemp = (a/2) * 100 
    nSumBidAsk.append(aTemp) 
df['HL_PCT'] = [x1/x2 for (x1, x2) in zip(diffHighLow, nSumBidAsk)] 

diffCloseBid = [(x1 - x2) for (x1, x2) in zip(nClose, nBid)] 
divDiffCloseBid = [(x1/x2) for (x1, x2) in zip(diffCloseBid, nBid)] 
nPCT_change = [] 
for b in divDiffCloseBid: 
    bTemp = b * 100 
    nPCT_change.append(bTemp) 
df['PCT_change'] = nPCT_change 

df['forecast_col'] = df['nClose'] 
df['forecast_out'] = int(math.ceil(0.01 * len(df))) 

df['laebl'] = df['forecast_col'].shift(-forecast_out) 
X = np.array(df.drop(['label'], 1)) 

EDITED | Maintenant, y compris la pile trace

File "<ipython-input-4-006cfd724c3e>", line 1, in <module> 
runfile('C:/Users/venichhe/Desktop/test3.py', 
wdir='C:/Users/venichhe/Desktop') 

File "C:\Users\venichhe\Anaconda2\lib\site- 
packages\spyder\utils\site\sitecustomize.py", line 866, in runfile 
execfile(filename, namespace) 

File "C:\Users\venichhe\Anaconda2\lib\site- 
packages\spyder\utils\site\sitecustomize.py", line 87, in execfile 
exec(compile(scripttext, filename, 'exec'), glob, loc) 

File "C:/Users/venichhe/Desktop/test3.py", line 69, in <module> 
df['laebl'] = df['forecast_col'].shift(-forecast_out) 

AttributeError: 'list' object has no attribute 'shift' 
+1

Et quelle est l'erreur? Vous ne l'avez pas spécifié. Postez-le avec une trace de pile complète. –

+0

J'ai modifié le post et inclus la trace de la pile. Je faisais plus de recherches et je pense que j'utilise peut-être mal le cadre de données pandas. Je n'ai pas encore eu l'occasion de l'essayer, mais je le ferai dans les prochains jours. – venichhe

Répondre

1

S'il vous plaît essayer après avoir corrigé l'erreur d'orthographe:

df['**laebl**'] = df['forecast_col'].shift(-forecast_out) 

à

df['label'] = df['forecast_col'].shift(-forecast_out) 
+1

Et bien sûr, d'abord convertir dict à un cadre de données pandas – raja

1

Vous n'utilisez pas dataframe de pandas géants du tout, vous utilisez un dictionnaire appelé df puis essayer de l'utiliser comme il est un dataframe. Essayez de charger vos données en utilisant pandas.read_csv.

+0

J'ai été capable de charger le fichier, merci. Maintenant, comment puis-je sélectionner certaines colonnes de la CSV. J'ai essayé de l'utiliser comme [«colonne»] ainsi que [colonne]. Aucun travail. – venichhe