#python #dataframe
Вопрос:
Я довольно новичок в python, поэтому я адаптировал код, который нашел в онлайн-ресурсах, чтобы попытаться создать эту регрессию. Код, который я извлекаю, работает идеально, и я почти ничего не изменил, кроме источников данных, поэтому я не уверен, что делаю неправильно. Любая помощь была бы невероятной! Вот код, который я использую:
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
dfgmatgpa = df[["GradGPA", "GMATscore"]]
dfgmatgpa = dfgmatgpa.dropna()
dfgmatgpa.head()
GradGPA GMATscore
17 2.80000 340.0
18 2.80000 340.0
32 4.15000 660.0
36 3.88143 570.0
41 3.28571 540.0
# Load the diabetes dataset
gmatgpa_X, gmatgpa_y = dfgmatgpa(return_X_y=True)
# Use only one feature
gmatgpa_X = gmatgpa_X[:, np.newaxis, 2]
# Split the data into training/testing sets
gmatgpa_X_train = gmatgpa_X[:-20]
gmatgpa_X_test = gmatgpa_X[-20:]
# Split the targets into training/testing sets
gmatgpa_y_train = gmatgpa_y[:-20]
gmatgpa_y_test = gmatgpa_y[-20:]
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(gmatgpa_X_train, gmatgpa_y_train)
# Make predictions using the testing set
gmatgpa_y_pred = regr.predict(gmatgpa_X_test)
# The coefficients
print('Coefficients: n', regr.coef_)
# The mean squared error
print('Mean squared error: %.2f'
% mean_squared_error(gmatgpa_y_test, gmatgpa_y_pred))
# The coefficient of determination: 1 is perfect prediction
print('Coefficient of determination: %.2f'
% r2_score(gmatgpa_y_test, gmatgpa_y_pred))
# Plot outputs
plt.scatter(gmatgpa_X_test, gmatgpa_y_test, color='black')
plt.plot(gmatgpa_X_test, gmatgpa_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
ошибка:
TypeError Traceback (most recent call last)
<ipython-input-321-b5f145507243> in <module>
----> 1 gmatgpa_X, gmatgpa_y = dfgmatgpa(return_X_y=True)
2
3 # Use only one feature
4 gmatgpa_X = gmatgpa_X[:, np.newaxis, 2]
5
TypeError: 'DataFrame' object is not callable
Комментарии:
1.
dfgmatgpa
это фрейм данных.dfgmatgpa(return_X_y=True)
подразумевает, что это функция (она же вызываемая). Вы, наверное, хотитеdfgmatgpa[return_X_y=True]
2. Вы намеревались вызвать какую-то функцию загрузки?
3. Большое вам спасибо, в этом есть смысл. Код, на основе которого я основываю свою работу, загружал набор данных из sklearn для создания примера. Я пытаюсь понять, как использовать мой собственный набор данных dfgmatgpa и присвоить значения X и y. Когда я просто пытаюсь определить их: gmatgpa_X = dfgmatgpa. GMATscore gmatgpa_y = dfgmatgpa.GradGPA Я получаю ошибку: Ошибка индекса: слишком много индексов для массива
Ответ №1:
Возможно, вы имеете в виду какой-то пример кода, подобный этому:
from sklearn.datasets import load_iris
data = load_iris(return_X_y=True)
Здесь load_iris()
это функция, и когда значение return_X_y равно True, она возвращает кортеж (данные, цель).
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
В вашем случае вы определяете dfgmatgpa
как фрейм данных, а не функцию, вот почему вы получили ошибку. Но вы можете определить X и y отдельно, как вам нужно: gmatgpa_X
gmatgpa_y
как фрейм данных, как целевой список.
Комментарии:
1. Большое вам спасибо, в этом есть смысл. Код, на основе которого я основываю свою работу, загружал набор данных из sklearn для создания примера. Я пытаюсь понять, как использовать мой собственный набор данных dfgmatgpa и присвоить значения X и y. Когда я просто пытаюсь определить их: gmatgpa_X = dfgmatgpa. GMATscore gmatgpa_y = dfgmatgpa.GradGPA Я получаю ошибку: Ошибка индекса: слишком много индексов для массива
2. Похоже, что ваш ввод ищет массив? Возможно, попробуйте преобразовать серию в массив «dfgmatgpa.GradGPA.values» (учитывая, что dfgmatgpa является фреймом данных, dfgmatgpa.GradGPA будет серией).
3. Вот и все!!! Спасибо, спасибо, спасибо!!!!