+++ /dev/null
-TEMPLATE = subdirs
-SUBDIRS += nikkei_stock_avarage
TEMPLATE = subdirs
-!isEmpty(QT.jubatus.name) {
- SUBDIRS += cpp
- !isEmpty(QT.qml.name): SUBDIRS += qml
-}
+SUBDIRS += jubatus
--- /dev/null
+TEMPLATE = subdirs
+SUBDIRS += network_intrusion_detection
--- /dev/null
+#include <QtCore>
+#include <QtNetwork>
+#include <QtWidgets>
+#include <QtJubatus>
+
+class Graph : public QWidget
+{
+ Q_OBJECT
+public:
+ Graph(QWidget *parent = 0);
+
+protected:
+ void paintEvent(QPaintEvent *e);
+
+private:
+ QNetworkAccessManager manager;
+ struct Data {
+ Data() : first(0), last(0), score(0) {}
+ float first;
+ float last;
+ float score;
+ };
+
+ QList<Data> data;
+};
+
+Graph::Graph(QWidget *parent)
+ : QWidget(parent)
+{
+ QJubatusAnomaly anomaly;
+
+ QFile file("kddcup.data_10_percent");
+ if (!file.open(QFile::ReadOnly)) {
+ qWarning() << file.errorString();
+ return;
+ }
+
+ QTextStream stream(&file);
+ while (!stream.atEnd()) {
+ QStringList fields = stream.readLine().split(',');
+ QVariantMap params;
+ int i = 0;
+
+ params["duration"] = fields.at(i++).toFloat();
+ params["protocol_type"] = fields.at(i++);
+ params["service"] = fields.at(i++);
+ params["flag"] = fields.at(i++);
+ params["src_bytes"] = fields.at(i++).toFloat();
+ params["dst_bytes"] = fields.at(i++).toFloat();
+ params["land"] = fields.at(i++);
+ params["wrong_fragment"] = fields.at(i++).toFloat();
+ params["urgent"] = fields.at(i++).toFloat();
+ params["hot"] = fields.at(i++).toFloat();
+ params["num_failed_logins"] = fields.at(i++).toFloat();
+ params["logged_in"] = fields.at(i++);
+ params["num_compromised"] = fields.at(i++).toFloat();
+ params["root_shell"] = fields.at(i++).toFloat();
+ params["su_attempted"] = fields.at(i++).toFloat();
+ params["num_root"] = fields.at(i++).toFloat();
+ params["num_file_creations"] = fields.at(i++).toFloat();
+ params["num_shells"] = fields.at(i++).toFloat();
+ params["num_access_files"] = fields.at(i++).toFloat();
+ params["num_outbound_cmds"] = fields.at(i++).toFloat();
+ params["is_host_login"] = fields.at(i++);
+ params["is_guest_login"] = fields.at(i++);
+ params["count"] = fields.at(i++).toFloat();
+ params["srv_count"] = fields.at(i++).toFloat();
+ params["serror_rate"] = fields.at(i++).toFloat();
+ params["srv_serror_rate"] = fields.at(i++).toFloat();
+ params["rerror_rate"] = fields.at(i++).toFloat();
+ params["srv_rerror_rate"] = fields.at(i++).toFloat();
+ params["same_srv_rate"] = fields.at(i++).toFloat();
+ params["diff_srv_rate"] = fields.at(i++).toFloat();
+ params["srv_diff_host_rate"] = fields.at(i++).toFloat();
+ params["dst_host_count"] = fields.at(i++).toFloat();
+ params["dst_host_srv_count"] = fields.at(i++).toFloat();
+ params["dst_host_same_srv_rate"] = fields.at(i++).toFloat();
+ params["dst_host_diff_srv_rate"] = fields.at(i++).toFloat();
+ params["dst_host_same_src_port_rate"] = fields.at(i++).toFloat();
+ params["dst_host_srv_diff_host_rate"] = fields.at(i++).toFloat();
+ params["dst_host_serror_rate"] = fields.at(i++).toFloat();
+ params["dst_host_srv_serror_rate"] = fields.at(i++).toFloat();
+ params["dst_host_rerror_rate"] = fields.at(i++).toFloat();
+ params["dst_host_srv_rerror_rate"] = fields.at(i++).toFloat();
+ QString label = fields.at(i++);
+ QJubatusAnomaly::IdAndScore ret = anomaly.add(params);
+ if (!qIsInf(ret.score) && !qFuzzyCompare(ret.score, 1.0f)) {
+ qDebug() << label << ret.id << ret.score;
+ }
+ }
+
+ file.close();
+}
+
+void Graph::paintEvent(QPaintEvent *e)
+{
+ if (data.isEmpty()) return;
+
+ QPainter p(this);
+
+ float x = 0;
+ float dx = (float)width() / data.count();
+ float dy = height();
+
+ foreach (const Data &d, data) {
+ p.fillRect(QRectF(x, (1.0 - qMax(d.first, d.last)) * dy, dx, qAbs(d.last - d.first) * dy), QColor(qIsInf(d.score) ? Qt::red : Qt::black));
+ x += dx;
+ }
+}
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ Graph graph;
+ graph.show();
+
+ return app.exec();
+}
+
+#include "main.moc"
--- /dev/null
+{
+ "method" : "lof",
+ "parameter" : {
+ "nearest_neighbor_num" : 10,
+ "reverse_nearest_neighbor_num" : 30,
+ "method" : "euclid_lsh",
+ "parameter" : {
+ "hash_num" : 8,
+ "table_num" : 16,
+ "probe_num" : 64,
+ "bin_width" : 10,
+ "seed" : 1234
+ }
+ },
+
+ "converter" : {
+ "string_filter_types": {},
+ "string_filter_rules": [],
+ "num_filter_types": {},
+ "num_filter_rules": [],
+ "string_types": {},
+ "string_rules": [{"key":"*", "type":"str", "global_weight" : "bin", "sample_weight" : "bin"}],
+ "num_types": {},
+ "num_rules": [{"key" : "*", "type" : "num"}]
+ }
+}
--- /dev/null
+TEMPLATE = app
+TARGET = jubatus-network-intrusion-detection
+QT = core network gui widgets jubatus
+CONFIG += c++11
+SOURCES = main.cpp
+
+OTHER_FILES += network_intrusion_detection.json
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/cpp/anomaly/network_intrusion_detection
+INSTALLS += target
+
SOURCES = main.cpp
OTHER_FILES += nikkei_stock_avarage.json
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/jubatus-nikke-stock-avarage
+INSTALLS += target
+
widget.ui
OTHER_FILES += gender.json
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/cpp/classifier/gender
+INSTALLS += target
HEADERS += \
dialog.h
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/cpp/recommender/npb_similar_player
+INSTALLS += target
HEADERS += \
dialog.h
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/cpp/regression/rent_data
+INSTALLS += target
--- /dev/null
+TEMPLATE = subdirs
+!isEmpty(QT.jubatus.name) {
+ SUBDIRS += cpp
+ !isEmpty(QT.qml.name): SUBDIRS += qml
+}
+
OTHER_FILES += gender.qml gender.json \
Selector.qml \
Button.qml
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/qml/classifier/gender
+INSTALLS += target
npb_similar_player.qrc
OTHER_FILES += npb_similar_player.qml npb_similar_player.json
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/qml/recommender/npb_similar_player
+INSTALLS += target
qtcAddDeployment()
OTHER_FILES += iris.json
+
+target.path = $$[QT_INSTALL_EXAMPLES]/jubatus/qml/regression/iris
+INSTALLS += target
{
Q_OBJECT
public:
- QmlJubatusClassifier(QObject *parent = 0);
+ QmlJubatusClassifier(QObject *parent = nullptr);
Q_INVOKABLE void train(const QString &label, const QVariantMap &data);
Q_INVOKABLE QVariantList classify(const QVariantMap &data);
{
Q_OBJECT
public:
- explicit QmlJubatusRecommender(QObject *parent = 0);
+ explicit QmlJubatusRecommender(QObject *parent = nullptr);
Q_INVOKABLE QVariantList similarRowFromId(const QString &id, uint size);
Q_INVOKABLE QVariantList similarRowFromDatum(const QVariantMap &data, uint size);
{
Q_OBJECT
public:
- explicit QmlJubatusRegression(QObject *parent = 0);
+ explicit QmlJubatusRegression(QObject *parent = nullptr);
Q_INVOKABLE bool train(const QVariantMap &data, float score);
Q_INVOKABLE float estimate(const QVariantMap &data);
{
Q_OBJECT
public:
- explicit QJubatusAnomaly(QObject *parent = 0);
+ explicit QJubatusAnomaly(QObject *parent = nullptr);
struct IdAndScore {
IdAndScore() : score(0.0) {}
{
Q_OBJECT
public:
- explicit QJubatusClassifier(QObject *parent = 0);
+ explicit QJubatusClassifier(QObject *parent = nullptr);
struct LabeledDatum {
QString label;
emit timeoutChanged(timeout);
}
-bool QJubatusClient::save(const QString &id)
+QHash<QString, QString> QJubatusClient::save(const QString &id)
{
- bool ret = false;
- EXEC_JUBATUS_COMMAND_PRIVATE( ret = m_client->save(convert(id));, m_client )
+ QHash<QString, QString> ret;
+ EXEC_JUBATUS_COMMAND_PRIVATE( ret = convert(m_client->save(convert(id)));, m_client )
return ret;
}
}
return ret;
}
+
+std::map<std::string, std::string> QJubatusClient::convert(const QHash<QString, QString> &data) const
+{
+ std::map<std::string, std::string> ret;
+ QHashIterator<QString, QString> i(data);
+ while (i.hasNext()) {
+ ret[convert(i.key())] = convert(i.value());
+ }
+ return ret;
+}
+
+QHash<QString, QString> QJubatusClient::convert(const std::map<std::string, std::string> &data) const
+{
+ QHash<QString, QString> ret;
+ for(const auto itr : data) {
+ ret.insert(convert(itr.first), convert(itr.second));
+ }
+ return ret;
+}
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(double timeout READ timeout WRITE setTimeout NOTIFY timeoutChanged)
public:
- explicit QJubatusClient(QObject *parent = 0);
+ explicit QJubatusClient(QObject *parent = nullptr);
const QString &host() const;
int port() const;
const QString &name() const;
double timeout() const;
- bool save(const QString &id);
+ QHash<QString, QString> save(const QString &id);
bool load(const QString &id);
-public slots:
+public Q_SLOTS:
void setHost(const QString &host);
void setPort(int port);
void setName(const QString &name);
void setTimeout(double timeout);
-signals:
+Q_SIGNALS:
void hostChanged(const QString &host);
void portChanged(int port);
void nameChanged(const QString &name);
QVariantMap convert(const jubatus::client::common::datum &data) const;
std::vector<jubatus::client::common::datum> convert(const QList<QVariantMap> &data) const;
QList<QVariantMap> convert(const std::vector<jubatus::client::common::datum> &data) const;
+ std::map<std::string, std::string> convert(const QHash<QString, QString> &data) const;
+ QHash<QString, QString> convert(const std::map<std::string, std::string> &data) const;
private:
class Private;
{
}
-bool QJubatusClustering::push(const QList<QVariantMap> &data)
+bool QJubatusClustering::push(const QList<IndexedPoint> &data)
{
bool ret = false;
EXEC_JUBATUS_COMMAND( ret = client()->push(convert(data)); )
}
return ret;
}
+
QList<QList<QJubatusClustering::WeightedDatum> > QJubatusClustering::convert(const std::vector<std::vector<jubatus::clustering::weighted_datum> > &data) const
{
QList<QList<QJubatusClustering::WeightedDatum> > ret;
return ret;
}
+jubatus::clustering::indexed_point QJubatusClustering::convert(const QJubatusClustering::IndexedPoint &data) const
+{
+ jubatus::clustering::indexed_point ret;
+ ret.id = convert(data.id);
+ ret.point = convert(data.point);
+ return ret;
+}
+
+std::vector<jubatus::clustering::indexed_point> QJubatusClustering::convert(const QList<QJubatusClustering::IndexedPoint> &data) const
+{
+ std::vector<jubatus::clustering::indexed_point> ret;
+ foreach (const IndexedPoint &indexPoint, data) {
+ ret.push_back(convert(indexPoint));
+ }
+ return ret;
+}
+
jubatus::clustering::client::clustering *QJubatusClustering::client() {
return QJubatusClient::client<jubatus::clustering::client::clustering>();
}
namespace jubatus {
namespace clustering {
struct weighted_datum;
+ struct indexed_point;
namespace client {
class clustering;
}
{
Q_OBJECT
public:
- explicit QJubatusClustering(QObject *parent = 0);
+ explicit QJubatusClustering(QObject *parent = nullptr);
struct WeightedDatum {
double weight;
QVariantMap point;
};
- Q_INVOKABLE bool push(const QList<QVariantMap> &data);
+ struct IndexedPoint {
+ QString id;
+ QVariantMap point;
+ };
+
+ Q_INVOKABLE bool push(const QList<IndexedPoint> &data);
Q_INVOKABLE uint getRevision();
Q_INVOKABLE QList<QList<QJubatusClustering::WeightedDatum> > getCoreMembers();
Q_INVOKABLE QList<QVariantMap> getKCenter();
QJubatusClustering::WeightedDatum convert(const jubatus::clustering::weighted_datum &data) const;
QList<QJubatusClustering::WeightedDatum> convert(const std::vector<jubatus::clustering::weighted_datum> &data) const;
QList<QList<QJubatusClustering::WeightedDatum> > convert(const std::vector<std::vector<jubatus::clustering::weighted_datum> > &data) const;
+ jubatus::clustering::indexed_point convert(const QJubatusClustering::IndexedPoint &data) const;
+ std::vector<jubatus::clustering::indexed_point> convert(const QList<QJubatusClustering::IndexedPoint> &data) const;
private:
jubatus::clustering::client::clustering *client();
{
Q_OBJECT
public:
- explicit QJubatusRecommender(QObject *parent = 0);
+ explicit QJubatusRecommender(QObject *parent = nullptr);
struct IdWithScore {
QString id;
{
Q_OBJECT
public:
- explicit QJubatusRegression(QObject *parent = 0);
+ explicit QJubatusRegression(QObject *parent = nullptr);
struct ScoredDatum {
float score;