小编Jon*_*han的帖子

使用Tensorflow的LinearClassifier和Panda的数据框构建SVM

我知道这个问题,但这是一个过时的功能。

假设我正在尝试根据某人已经访问过的国家和他们的收入来预测一个人是否会访问“ X”国。

我在pandas DataFrame中有一个训练数据集,格式如下。

  1. 每行代表一个不同的人,每个人与矩阵中的其他人无关。
  2. 前10列都是国家/地区的名称,列中的值是二进制值(如果访问过该国家,则为1;否则,则为0)。
  3. 第11栏是他们的收入。这是一个连续的十进制变量。
  4. 最后,第12列是另一个二进制表,表示是,他们是否访问过“ X”。

因此,从本质上讲,如果我的数据集中有100,000个人,那么我的数据框的尺寸为100,000 x 12。我希望能够使用tensorflow将其正确传递到线性分类器中。但是,即使是如何处理,也不确定。

我正在尝试将数据传递给此功能

estimator = LinearClassifier(
    n_classes=n_classes, feature_columns=[sparse_column_a, 
 sparse_feature_a_x_sparse_feature_b], label_keys=label_keys)
Run Code Online (Sandbox Code Playgroud)

(如果对使用哪种估算器有更好的建议,我愿意尝试。)

我将数据传递为:

df = pd.DataFrame(np.random.randint(0,2,size=(100, 12)), columns=list('ABCDEFGHIJKL'))
tf_val = tf.estimator.inputs.pandas_input_fn(X.iloc[:, 0:9], X.iloc[:, 11], shuffle=True)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何获取此输出并将其正确传递到分类器中。我是否可以正确设置问题?我不是来自数据科学领域,因此任何指导都将非常有帮助!

顾虑

  1. 第11列是协变量。因此,我认为它不能仅作为功能部件传递,对吗?
  2. 由于第11列是与第1列到第10列完全不同的功能,因此我也如何将第11列并入分类器。
  3. 至少,即使我忽略第11列,如何至少将第1到10列与label =列12匹配,并将其传递给分类器?

(赏金所需的工作代码)

python machine-learning svm pandas tensorflow

3
推荐指数
1
解决办法
644
查看次数

用坐标列表索引二维数组的 Pythonic 方法

我有类numpy.ndarray和维度的坐标(200,2)。基本上是regionprops的输出。

我想索引一个图像矩阵(也是一个ndarray)的 dim img.shape = (1000,1000)。我希望能够做类似的事情

for prop in region:
    img[prop.coords] = 0
Run Code Online (Sandbox Code Playgroud)

但是,发生的情况是,它不会将坐标视为行、列对。而是将每个数字作为行号并将整行设置为 0。

我怎样才能解决这个问题?

我尝试重塑数组,但这似乎也不起作用。我能想到的唯一其他想法是将这些索引转换为矩阵,其中矩阵的大小与图像尺寸相同,这些坐标为 1,所有其他坐标值为 0。然后,使用此矩阵进行索引。然而,这似乎并不比使用 for 循环暴力强制它更有效。

python numpy scikit-image

3
推荐指数
1
解决办法
552
查看次数

为什么不将L2正则化添加回原始损失函数中?

我知道当使用内核正则化器,尤其是l2 loss时,我应该将其重新添加到loss函数中,这是在其他帖子中所做的。但是,在Keras,他们没有遵循此过程。为什么会这样呢?

例如,考虑这个这个笔记本。他们在某些层级使用l2损失作为核心调节器,但并未加回到原始损失中。这是因为特定的损失,还是仅仅是Keras遵循的行为,还是我完全误解了一切?

computer-vision neural-network keras tensorflow

2
推荐指数
1
解决办法
297
查看次数

如何腌制多个 pandas 数据帧并在单个命令中连接所有它们

Files =['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[0])
df1=pd.read_pickle(fout)
df1 = df1[df1.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[1])
df2=pd.read_pickle(fout)
df2 = df2[df2.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[2])
df3=pd.read_pickle(fout)
df3 = df3[df3.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[3])
df4=pd.read_pickle(fout)
df4 = df4[df4.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[4])
df5=pd.read_pickle(fout)
df5 = df5[df5.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[5])
df6=pd.read_pickle(fout)
df6 = df6[df6.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[6])
df7=pd.read_pickle(fout)
df7 = df7[df7.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[7])
df8=pd.read_pickle(fout)
df8 = df8[df8.columns[:100]]

df = pd.concat([df1, df2, df3, df4, df5, df6, df7, df8], axis = 1)
df = df.loc[:,~df.columns.duplicated()]
Run Code Online (Sandbox Code Playgroud)

我有以下命令,前 8 个块都是重复代码,修改很小。有没有办法我可以做到这样的事情:

[pd.read_pickle('/PATH/df/{}/{}.F.K.df'.format('train',Files[i])) for i in Files]

但这只会给我很多将被设置为同一个变量的数据帧,而且我不知道如何将其映射到 8 个不同的数据帧,然后将它们一次性连接起来。

python dataframe pandas

2
推荐指数
1
解决办法
2480
查看次数