NetworkML: train_OneLayerModel.py script and training samples errors
Hi, I am trying to create a model to be used in Poseidon #49. I captured traffic from raspberry pi and a laptop into two pcap files, then.
1- I added “IOT” into config.json labels list. 2- I added the two pcap files into pcap dir and edited label_assignments.json as below.
root@e0e996977e0e:/app/NodeClassifier/pcap# ls
BusinessWS-60m-mylaptop.pcap label_assignments.json
IOT-260m-ibmwatsoniot.pcap
root@e0e996977e0e:/app/NodeClassifier/pcap# cat label_assignments.json
{
"IOT": "IOT",
"BusinessWS": "Business workstation"
}
When I run train script, I got “ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 0”. What is wrong? I have already added two pcap files and labeled them in label_assignments.json.
rs/ot@e0e996977e0e:/app/NodeClassifier# python train_OneLayerModel.py pcap/ models
Reading data
Reading pcap/IOT-260m-ibmwatsoniot.pcap as IOT
Reading pcap/BusinessWS-60m-mylaptop.pcap as Business workstation
Making data splits
Normalizing features
Doing feature selection
Traceback (most recent call last):
File "train_OneLayerModel.py", line 28, in <module>
model.train(data_dir)
File "/app/NodeClassifier/utils/OneLayer.py", line 153, in train
self.feature_list = select_features(X_normed, y_train)
File "/app/NodeClassifier/utils/training_utils.py", line 101, in select_features
selection_model.fit(X, y)
File "/usr/local/lib/python3.5/site-packages/sklearn/linear_model/randomized_l1.py", line 112, in fit
sample_fraction=self.sample_fraction, **params)
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/memory.py", line 283, in __call__
return self.func(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/sklearn/linear_model/randomized_l1.py", line 54, in _resample_model
for _ in range(n_resampling)):
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 758, in __call__
while self.dispatch_one_batch(iterator):
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 608, in dispatch_one_batch
self._dispatch(tasks)
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 571, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 109, in apply_async
result = ImmediateResult(func)
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 326, in __init__
self.results = batch()
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in __call__
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/usr/local/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 131, in <listcomp>
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/usr/local/lib/python3.5/site-packages/sklearn/linear_model/randomized_l1.py", line 377, in _randomized_logistic
clf.fit(X, y)
File "/usr/local/lib/python3.5/site-packages/sklearn/linear_model/logistic.py", line 1186, in fit
sample_weight=sample_weight)
File "/usr/local/lib/python3.5/site-packages/sklearn/svm/base.py", line 875, in _fit_liblinear
" class: %r" % classes_[0])
ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 0
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 24 (18 by maintainers)
This error has been solved by following the naming pattern for pcap file like the same here