Объект 'tuple' не имеет атрибута 'reshape' - PullRequest
0 голосов
/ 04 октября 2018

Я использовал набор данных "ex1data1.txt", но когда я запускаю его для преобразования, он показывает следующую ошибку:

AttributeError                            Traceback (most recent call last)
<ipython-input-52-7c523f7ba9e1> in <module>()
      1 # Converting loaded dataset into numpy array
      2 
----> 3 X = np.concatenate((np.ones(len(population)).reshape(len(population), 1), population.reshape(len(population),1)), axis=1)
      4 
      5 

AttributeError: 'tuple' object has no attribute 'reshape'

Код указан ниже:

import csv
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import pandas as pd
import numpy as np

# Loading Dataset
with open('ex1data1.txt') as csvfile:
    population, profit = zip(*[(float(row['Population']), float(row['Profit'])) for row in csv.DictReader(csvfile)])

# Creating DataFrame
df = pd.DataFrame()
df['Population'] = population
df['Profit'] = profit

# Plotting using Seaborn
sns.lmplot(x="Population", y="Profit", data=df, fit_reg=False, scatter_kws={'s':45})

# Converting loaded dataset into numpy array
X = np.concatenate((np.ones(len(population)).reshape(len(population), 1), population.reshape(len(population),1)), axis=1)

y = np.array(profit).reshape(len(profit), 1)

# Creating theta matrix , theta = [[0], [0]]
theta = np.zeros((2, 1))

# Learning rate
alpha = 0.1
# Iterations to be taken
iterations = 1500
# Updated theta and calculated cost
theta, cost = gradientDescent(X, y, theta, alpha, iterations)

Я не знаю, как решить эту проблему.Может кто-нибудь сказать, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 октября 2018

по вашему определению, population - это кортеж.Я бы предложил два варианта, первый - преобразовать его в массив, т.е.

population = np.asarray(population)

В качестве альтернативы, вы можете использовать атрибут столбца DataFrame .values, который по сути является массивом с нулевыми значениями:

X = np.concatenate((np.ones(len(population)).reshape(len(population), 1), df['Population'].values.reshape(len(population),1)), axis=1)
...