Tev*_*tım 5 python invalid-argument tensorflow
我一直在尝试将这个 ML 线性模型实现到我的数据集中。(https://www.tensorflow.org/tutorials/estimator/linear)
语言:Python 3.8.3
L?braries:TensorFlow 2.4.0
Numpy:1.19.3
Pandas
Matplotlib
和其他:
import os
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import clear_output
from six.moves import urllib
Run Code Online (Sandbox Code Playgroud)
import tensorflow.compat.v2.feature_column as fc
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)
ss1517 是我的数据集的名称。它是一个 CSV 文件,有 4116 行和 20 列,并且有很多 NaN 值(没有没有 NaN 值的列)
traindata = ss1517.iloc[0:2470,:] # 60 % of my dataset is splitted by training set
evaldata = ss1517.iloc[2470:4116, :] # 40 % of my dataset is splitted by eval set
ytrain = traindata.pop("AvgOfMajor N")
yeval = evaldata.pop("AvgOfMajor N")
Run Code Online (Sandbox Code Playgroud)
CATEGORICAL_COLUMNS 是我数据集中的分类列。
NUMERIC_COLUMNS 是我的数据集中的数字列。
CATEGORICAL_COLUMNS = ['Location-Name', 'Location-Code', 'Borough', 'Building-Name', 'Schools-in-Building', 'ENGroupA', 'RangeA']
NUMERIC_COLUMNS = ['Geographical-District-Code', 'Register', '#-Schools', 'Major-N', 'Oth-N', 'NoCrim-N', 'Prop-N', 'Vio-N', 'AvgOfOth-N', 'AvgOfNoCrim-N', 'AvgOfProp-N', 'AvgOfVio-N']
feature_columns = []
for feature_name in CATEGORICAL_COLUMNS:
vocabulary = traindata[feature_name].unique()
feature_columns.append(tf.feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))
for feature_name in NUMERIC_COLUMNS:
feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))
Run Code Online (Sandbox Code Playgroud)
def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=32):
def input_function():# inner function, this will be returned.
ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df)) # Create tf.data.Dataset object with data and its label
if shuffle:
ds = ds.shuffle(1000) # randomize order of data
ds = ds.batch(batch_size).repeat(num_epochs)
return ds # return a batch of dataset
return input_function # return the input_function
train_input_fn = make_input_fn(traindata, ytrain)
eval_input_fn = make_input_fn(evaldata, yeval, num_epochs=1, shuffle=False)
Run Code Online (Sandbox Code Playgroud)
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)
linear_est.train(train_input_fn) #train
result = linear_est.evaluate(eval_input_fn) #get model metrics/stats by testing on testing data
clear_output() #clears console output
print(result["accuracy"]) #the result variable is simply dict of stats about our model
Run Code Online (Sandbox Code Playgroud)
运行此单元格时出现此错误 InvalidArgumentError: assertion failed: [Labels must be <= n_classes - 1] [Condition x <= y did not hold element-wise:] [x (head/losses/Cast:0) = ] [[0.28][0.28][1.69]...] [y (head/losses/check_label_range/Const:0) = ] [1]
:
linear_est.train(train_input_fn) #train
result = linear_est.evaluate(eval_input_fn) #get model metrics/stats by testing on testing data
clear_output() #clears console output
print(result["accuracy"]) #the result variable is simply dict
Run Code Online (Sandbox Code Playgroud)
注意我在我的数据集 (ss1517) 上使用fillna(method="bfill")和 fillna(method="ffill)来填充 Na 值。
我该如何解决这个错误?
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |