Cross validation error DataConversionWarning: A column-vector y was passed when a 1d array was expected

Viewed 74

""" I have a problem when I try to obtain de cv of the data set, de process give me a result but also show these error "DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel()". I dont know what is the error, I hope some one can help me."""

import graphviz
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn import metrics
from sklearn import  tree
from io import StringIO
from sklearn.tree import export_graphviz
from sklearn import svm
from sklearn.model_selection import cross_val_score
from IPython.display import Image
import pydotplus

df = pd.read_csv("C:/Users/geras/PycharmProjects/pythonProject/pima-data.csv")
df.isnull().values.any()
df_clean = df.dropna()

df_map = {True:1, False:0}
df["diabetes"] = df["diabetes"].map(df_map)

feature_columns = ['num_preg', 'glucose_conc', 'diastolic_bp', 'insulin', 'bmi', 'diab_pred', 'age', 'skin']
predicted_class = ['diabetes']

X = df[feature_columns].values
y = df[predicted_class].values
X_train, X_test, y_train,y_test = train_test_split(X, y, test_size=.3)


Tree = DecisionTreeClassifier()
Tree.fit(X_train,y_train)
DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None, random_state=0, max_leaf_nodes=None,
min_impurity_split=None, class_weight="Balanced", ccp_alpha=0.0)
predic = Tree.predict(X_test)

############  CV (CROSS VALIDATION) ##################

clf = svm.SVC(kernel='linear', C=1, random_state=42).fit(X_train, y_train)
scores = cross_val_score(clf, X, y, cv=10)
print("%0.2f accuracy with a standard deviation of %0.2f" % (scores.mean(), scores.std()))
scores = cross_val_score(
    clf, X, y, cv=5, scoring='f1_macro')
print("Score is: ",scores)
0 Answers
Related