从 tensorflow.js 中的 csv 数据中删除重复行
remove duplicates rows from csv data in tensorflow.js
我正在尝试使用 tensorflow.js - API 让我在 python 中创建的模型正常工作。现在我陷入了从 csv 文件中获取数据的部分。我能够获取数据,但在 python-Code 之后我更改了数据的布局。我找不到如何在 tensorflow.js 中成功实施的示例
我当前的数据布局:
hour----|quit----|mNumber-|sleepSum|difAge--|woman---|paytype-|sum1----|sum2----|sum3----|sum4----|sum5----|sum6----|sum7----|sum8
0-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
1-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
2-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
3-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
4-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
5-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|10------|5
6-------|0-------|12345---|5-------|50------|0-------|0-------|3-------|2-------|0-------|1-------|10------|7-------|9-------|4
7-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|3-------|2-------|5-------|3-------|0-------|3-------|1
8-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|1-------|0-------|0-------|0-------|0
9-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
10------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
11------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
12------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
13------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
14------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0
15------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
16------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0
17------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
18------|0-------|12345---|5-------|50------|0-------|0-------|4-------|1-------|0-------|0-------|0-------|0-------|0-------|0
19------|0-------|12345---|5-------|50------|0-------|0-------|4-------|0-------|3-------|0-------|0-------|0-------|0-------|0
20------|0-------|12345---|5-------|50------|0-------|0-------|7-------|0-------|3-------|0-------|0-------|2-------|0-------|0
21------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
22------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
23------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
0-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
1-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
2-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
3-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
4-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
5-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
6-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
7-------|0-------|67890---|40------|37------|0-------|0-------|2-------|1-------|0-------|0-------|0-------|0-------|0-------|0
8-------|0-------|67890---|40------|37------|0-------|0-------|3-------|9-------|0-------|0-------|1-------|0-------|0-------|3
9-------|0-------|67890---|40------|37------|0-------|0-------|6-------|4-------|1-------|10------|4-------|0-------|0-------|5
10------|0-------|67890---|40------|37------|0-------|0-------|1-------|2-------|0-------|1-------|2-------|0-------|0-------|1
11------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
12------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
13------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
14------|0-------|67890---|40------|37------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|3
15------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0
16------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
17------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|1
18------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|1
19------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0
20------|0-------|67890---|40------|37------|0-------|0-------|2-------|2-------|0-------|0-------|0-------|0-------|0-------|1
21------|0-------|67890---|40------|37------|0-------|0-------|3-------|4-------|0-------|0-------|0-------|0-------|0-------|0
22------|0-------|67890---|40------|37------|0-------|0-------|2-------|0-------|0-------|0-------|0-------|0-------|0-------|1
23------|0-------|67890---|40------|37------|0-------|0-------|6-------|1-------|0-------|0-------|0-------|0-------|0-------|1
我想要的样子:
hour----|quit----|mNumber-|sleepSum|difAge--|woman---|paytype-|sum1----|sum2----|sum3----|sum4----|sum5----|sum6----|sum7----|sum8----|sum9----|sum10----|...|sum191--|sum192
0-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0--------|...|0-------|0
0-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0--------|...|0-------|1
所以我有冗余数据(前 7 列对于 24 小时行中的每一行都是相同的。我想在路径上附加数据,所以我想出了 2 行,每行有 192 个总和不同的人。
我想知道 tensorflow.js 中是否有重新排列数据的功能,或者您是否建议在从 csv 加载数据后在 for 循环中手动执行此操作?
现在我正在这样获取数据:
const csvDataset = tf.data.csv(
csvUrl,
{
hasHeader:false,
delimiter:';',
columnNames:['hour','quit','mNumber','sleepSum','difAge','woman','paytype','sum1','sum2','sum3','sum4','sum5','sum6','sum7','sum8']
});
我在 python
中就是这样做的
data = np.genfromtxt("01TendencyDouble.csv",delimiter=';',dtype=np.dtype(np.int32))
HourData = data[:,7:15]
m = HourData.shape[0]//24
TendencyFull = np.zeros((m,24*8), dtype=int)
MetaData = np.zeros((m,6), dtype=int)
#Rearrange the Data. Stick all 24 hour-Records of the first 3 Months in a row then those of the sedond 3 months...
for i in range(m):
Tendency = HourData[i*24:i*24+24,:]
TendencyFull[i,:] = Tendency.flatten('F')
MetaData[i,0] = data[i*24,1] #MetaData[2,0] is Quit of Record 3
MetaData[i,1] = data[i*24,2] #MetaData[2,1] is MNumber for Record 3
MetaData[i,2] = data[i*24,3] #MetaData[2,2] is Sleep for Record 3
MetaData[i,3] = data[i*24,4] #MetaData[2,3] is DifAge for Record 3
MetaData[i,4] = data[i*24,5] #MetaData[2,4] is Woman for Record 3
MetaData[i,5] = data[i*24,6] #MetaData[2,5] is Paycash for Record 3
tf.data.csv
returns 使用引擎盖下的生成器将数据作为流。流本身不跟踪已经返回的数据。为了跟踪这一点,每个数据都需要存储在一个变量中。
如果该行与前一行相同,则通用解决方案是进行过滤。对于过滤,有条件运算符来区分有特征的情况,没有标签数据的情况(isLabel
未设置)
let latestRow = []
compareRows = (r1,r2) => {
const bool = r1.some((x, i) => x !== r2[i])
console.log(bool)
return bool
}
const flattenedDataset =
csvDataset
.filter(r => {
r = [...(r.ys ? [...Object.values(r.xs), ...Object.values(r.ys)] : Object.values(r))]
const bool = compareRows(r, latestRow)
latestRow = r
return bool
})
如果要在特定时间过滤重复项window,例如在每个n
行上过滤重复项,可以使用另一个变量来计算行数。 filter
operator
也会考虑这个变量
我正在尝试使用 tensorflow.js - API 让我在 python 中创建的模型正常工作。现在我陷入了从 csv 文件中获取数据的部分。我能够获取数据,但在 python-Code 之后我更改了数据的布局。我找不到如何在 tensorflow.js 中成功实施的示例 我当前的数据布局:
hour----|quit----|mNumber-|sleepSum|difAge--|woman---|paytype-|sum1----|sum2----|sum3----|sum4----|sum5----|sum6----|sum7----|sum8
0-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
1-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
2-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
3-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
4-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
5-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|10------|5
6-------|0-------|12345---|5-------|50------|0-------|0-------|3-------|2-------|0-------|1-------|10------|7-------|9-------|4
7-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|3-------|2-------|5-------|3-------|0-------|3-------|1
8-------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|1-------|0-------|0-------|0-------|0
9-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
10------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
11------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
12------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
13------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
14------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0
15------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
16------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0
17------|0-------|12345---|5-------|50------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
18------|0-------|12345---|5-------|50------|0-------|0-------|4-------|1-------|0-------|0-------|0-------|0-------|0-------|0
19------|0-------|12345---|5-------|50------|0-------|0-------|4-------|0-------|3-------|0-------|0-------|0-------|0-------|0
20------|0-------|12345---|5-------|50------|0-------|0-------|7-------|0-------|3-------|0-------|0-------|2-------|0-------|0
21------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
22------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
23------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
0-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
1-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
2-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
3-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
4-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
5-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
6-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
7-------|0-------|67890---|40------|37------|0-------|0-------|2-------|1-------|0-------|0-------|0-------|0-------|0-------|0
8-------|0-------|67890---|40------|37------|0-------|0-------|3-------|9-------|0-------|0-------|1-------|0-------|0-------|3
9-------|0-------|67890---|40------|37------|0-------|0-------|6-------|4-------|1-------|10------|4-------|0-------|0-------|5
10------|0-------|67890---|40------|37------|0-------|0-------|1-------|2-------|0-------|1-------|2-------|0-------|0-------|1
11------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
12------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0
13------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
14------|0-------|67890---|40------|37------|0-------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|3
15------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0
16------|0-------|67890---|40------|37------|0-------|0-------|1-------|0-------|0-------|0-------|0-------|0-------|0-------|0
17------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|1
18------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|1
19------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|1-------|0-------|0-------|0
20------|0-------|67890---|40------|37------|0-------|0-------|2-------|2-------|0-------|0-------|0-------|0-------|0-------|1
21------|0-------|67890---|40------|37------|0-------|0-------|3-------|4-------|0-------|0-------|0-------|0-------|0-------|0
22------|0-------|67890---|40------|37------|0-------|0-------|2-------|0-------|0-------|0-------|0-------|0-------|0-------|1
23------|0-------|67890---|40------|37------|0-------|0-------|6-------|1-------|0-------|0-------|0-------|0-------|0-------|1
我想要的样子:
hour----|quit----|mNumber-|sleepSum|difAge--|woman---|paytype-|sum1----|sum2----|sum3----|sum4----|sum5----|sum6----|sum7----|sum8----|sum9----|sum10----|...|sum191--|sum192
0-------|0-------|12345---|5-------|50------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0--------|...|0-------|0
0-------|0-------|67890---|40------|37------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0-------|0--------|...|0-------|1
所以我有冗余数据(前 7 列对于 24 小时行中的每一行都是相同的。我想在路径上附加数据,所以我想出了 2 行,每行有 192 个总和不同的人。
我想知道 tensorflow.js 中是否有重新排列数据的功能,或者您是否建议在从 csv 加载数据后在 for 循环中手动执行此操作?
现在我正在这样获取数据:
const csvDataset = tf.data.csv(
csvUrl,
{
hasHeader:false,
delimiter:';',
columnNames:['hour','quit','mNumber','sleepSum','difAge','woman','paytype','sum1','sum2','sum3','sum4','sum5','sum6','sum7','sum8']
});
我在 python
中就是这样做的data = np.genfromtxt("01TendencyDouble.csv",delimiter=';',dtype=np.dtype(np.int32))
HourData = data[:,7:15]
m = HourData.shape[0]//24
TendencyFull = np.zeros((m,24*8), dtype=int)
MetaData = np.zeros((m,6), dtype=int)
#Rearrange the Data. Stick all 24 hour-Records of the first 3 Months in a row then those of the sedond 3 months...
for i in range(m):
Tendency = HourData[i*24:i*24+24,:]
TendencyFull[i,:] = Tendency.flatten('F')
MetaData[i,0] = data[i*24,1] #MetaData[2,0] is Quit of Record 3
MetaData[i,1] = data[i*24,2] #MetaData[2,1] is MNumber for Record 3
MetaData[i,2] = data[i*24,3] #MetaData[2,2] is Sleep for Record 3
MetaData[i,3] = data[i*24,4] #MetaData[2,3] is DifAge for Record 3
MetaData[i,4] = data[i*24,5] #MetaData[2,4] is Woman for Record 3
MetaData[i,5] = data[i*24,6] #MetaData[2,5] is Paycash for Record 3
tf.data.csv
returns 使用引擎盖下的生成器将数据作为流。流本身不跟踪已经返回的数据。为了跟踪这一点,每个数据都需要存储在一个变量中。
如果该行与前一行相同,则通用解决方案是进行过滤。对于过滤,有条件运算符来区分有特征的情况,没有标签数据的情况(isLabel
未设置)
let latestRow = []
compareRows = (r1,r2) => {
const bool = r1.some((x, i) => x !== r2[i])
console.log(bool)
return bool
}
const flattenedDataset =
csvDataset
.filter(r => {
r = [...(r.ys ? [...Object.values(r.xs), ...Object.values(r.ys)] : Object.values(r))]
const bool = compareRows(r, latestRow)
latestRow = r
return bool
})
如果要在特定时间过滤重复项window,例如在每个n
行上过滤重复项,可以使用另一个变量来计算行数。 filter
operator