#python #scikit-learn
#python #scikit-learn
Вопрос:
«»» У меня проблема, когда я пытаюсь получить cv набора данных, процесс выдает мне результат, но также показывает эту ошибку «DataConversionWarning: вектор-столбец y был передан, когда ожидался 1-мерный массив. Пожалуйста, измените форму y на (n_samples, ) , например, с помощью ravel() «. Я не знаю, в чем ошибка, я надеюсь, что кто-нибудь сможет мне помочь. «»»
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)