我正在尝试使用tensorflow.js-API使我在python中创建的模型能够正常工作。现在,我陷入了从csv文件中获取数据的部分。我能够获取数据,但是后来在python代码中,我更改了数据的布局。我找不到如何在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
所以我有冗余数据(24小时行的前7列都是相同的。我想将数据附加到路径上,所以我想出了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
使用引擎盖下的生成器将数据作为流返回。流本身不跟踪已返回的数据。为了跟踪这一点,每个数据都需要存储在一个变量中。
通用解决方案是过滤该行是否与上一行相同。为了进行过滤,使用条件运算符来区分有特征的情况,从没有特征的情况下标记数据(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
})
如果要在某个时间窗口上进行重复项过滤,例如在每个n
行上进行重复过滤,则可以使用另一个变量来对行进行计数。 filter
运算符中还将考虑此变量