TypeError: float() argument must be a string or a number, not 'tuple' ,ValueError: setting an array element with a sequence
TypeError: float() argument must be a string or a number, not 'tuple' ,ValueError: setting an array element with a sequence
I'm calling this function to get predicted price for a car
def predict_price(car_model,condition,body,transmission,fuel,year,capacity,mileage):
car_model_index = np.where(X.columns==car_model)[0][0]
condtion_index = np.where(X.columns==condition)[0][0]
body_index = np.where(X.columns==body)[0][0]
trans_index = np.where(X.columns==transmission)[0][0]
fuel_index = np.where(X.columns==fuel)[0][0]
x = np.zeros(len(X.columns))
x[0] = year,
x[1] = capacity,
x[2] = mileage,
if car_model_index>0:
x[car_model_index] = 1
if condtion_index>0:
x[condtion_index] = 1
if body_index>0:
x[body_index] = 1
if trans_index>0:
x[trans_index] = 1
if fuel_index>0:
x[fuel_index] = 1
return lr.predict([x])[0]
predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
Expecting to get the predicted price but getting an error like this, TypeError: float() argument must be a string or a number, not 'tuple' ,ValueError: setting an array element with a sequence.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: float() argument must be a string or a number, not 'tuple'
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-536-2e08ba5e0e1e> in <module>
----> 1 predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
<ipython-input-525-e4e4a4d425fb> in predict_price(car_model, condition, body, transmission, fuel, year, capacity, mileage)
7
8 x = np.zeros(len(X.columns))
----> 9 x[0] = year,
10 x[1] = capacity,
11 x[2] = mileage,
ValueError: setting an array element with a sequence.
AS @Priya 建议,您需要删除 year
、capacity
和 mileage
之后的 ,
:
def predict_price(car_model,condition,body,transmission,fuel,year,capacity,mileage):
car_model_index = np.where(X.columns==car_model)[0][0]
condtion_index = np.where(X.columns==condition)[0][0]
body_index = np.where(X.columns==body)[0][0]
trans_index = np.where(X.columns==transmission)[0][0]
fuel_index = np.where(X.columns==fuel)[0][0]
x = np.zeros(len(X.columns))
x[0] = year # here
x[1] = capacity # here
x[2] = mileage # and here
if car_model_index>0:
x[car_model_index] = 1
if condtion_index>0:
x[condtion_index] = 1
if body_index>0:
x[body_index] = 1
if trans_index>0:
x[trans_index] = 1
if fuel_index>0:
x[fuel_index] = 1
return lr.predict([x])[0]
predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
的确,逗号,
是用来创建元组的符号:
>>> year = 2018
>>> foo = year
>>> foo
2018
>>> type(foo)
<class 'int'>
>>> bar = year,
>>> bar
(2018,)
>>> type(bar)
<class 'tuple'>
I'm calling this function to get predicted price for a car
def predict_price(car_model,condition,body,transmission,fuel,year,capacity,mileage):
car_model_index = np.where(X.columns==car_model)[0][0]
condtion_index = np.where(X.columns==condition)[0][0]
body_index = np.where(X.columns==body)[0][0]
trans_index = np.where(X.columns==transmission)[0][0]
fuel_index = np.where(X.columns==fuel)[0][0]
x = np.zeros(len(X.columns))
x[0] = year,
x[1] = capacity,
x[2] = mileage,
if car_model_index>0:
x[car_model_index] = 1
if condtion_index>0:
x[condtion_index] = 1
if body_index>0:
x[body_index] = 1
if trans_index>0:
x[trans_index] = 1
if fuel_index>0:
x[fuel_index] = 1
return lr.predict([x])[0]
predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
Expecting to get the predicted price but getting an error like this, TypeError: float() argument must be a string or a number, not 'tuple' ,ValueError: setting an array element with a sequence.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: float() argument must be a string or a number, not 'tuple'
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-536-2e08ba5e0e1e> in <module>
----> 1 predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
<ipython-input-525-e4e4a4d425fb> in predict_price(car_model, condition, body, transmission, fuel, year, capacity, mileage)
7
8 x = np.zeros(len(X.columns))
----> 9 x[0] = year,
10 x[1] = capacity,
11 x[2] = mileage,
ValueError: setting an array element with a sequence.
AS @Priya 建议,您需要删除 year
、capacity
和 mileage
之后的 ,
:
def predict_price(car_model,condition,body,transmission,fuel,year,capacity,mileage):
car_model_index = np.where(X.columns==car_model)[0][0]
condtion_index = np.where(X.columns==condition)[0][0]
body_index = np.where(X.columns==body)[0][0]
trans_index = np.where(X.columns==transmission)[0][0]
fuel_index = np.where(X.columns==fuel)[0][0]
x = np.zeros(len(X.columns))
x[0] = year # here
x[1] = capacity # here
x[2] = mileage # and here
if car_model_index>0:
x[car_model_index] = 1
if condtion_index>0:
x[condtion_index] = 1
if body_index>0:
x[body_index] = 1
if trans_index>0:
x[trans_index] = 1
if fuel_index>0:
x[fuel_index] = 1
return lr.predict([x])[0]
predict_price('Toyota CHR','Used','SUV','Automatic','Petrol',2018,1200,26400)
的确,逗号,
是用来创建元组的符号:
>>> year = 2018
>>> foo = year
>>> foo
2018
>>> type(foo)
<class 'int'>
>>> bar = year,
>>> bar
(2018,)
>>> type(bar)
<class 'tuple'>