1
StandardScaler
(from pyspark.mllib.feature import StandardScaler
)でデータを拡大したいのですが、RDDの値を変換関数に渡すことでこれを行うことができますが、キーを保持したいという問題があります。とにかくキーを保存してデータを拡大することはありますか?Sparkでグループ単位でデータをスケールすることはできますか?
サンプルデータセット
0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,9,9,1.00,0.00,0.11,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,239,486,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,19,19,1.00,0.00,0.05,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,235,1337,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,29,29,1.00,0.00,0.03,0.00,0.00,0.00,0.00,0.00,smurf.
輸入
import sys
import os
from collections import OrderedDict
from numpy import array
from math import sqrt
try:
from pyspark import SparkContext, SparkConf
from pyspark.mllib.clustering import KMeans
from pyspark.mllib.feature import StandardScaler
from pyspark.statcounter import StatCounter
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
コードの一部
sc = SparkContext(conf=conf)
raw_data = sc.textFile(data_file)
parsed_data = raw_data.map(Parseline)
Parseline
機能:
def Parseline(line):
line_split = line.split(",")
clean_line_split = [line_split[0]]+line_split[4:-1]
return (line_split[-1], array([float(x) for x in clean_line_split]))
を私はそれが私にこのエラー「はTypeErrorを与えるこのコードを使用する場合:最初の 引数としてNoneTypeインスタンスを呼び出す必要があります(代わりにStatCounterインスタンスがあります) "、どういう考えですか? – Iman
データに欠損値がありますか?どのような種類ですか? – zero323
データの構造は次のようなものです[Label、array([数値浮動小数点値のリスト])、各ラベルは正常または攻撃、欠損値なし – Iman