この記事は「Golden Stone Project. Share 60,000 Cash Prize」に参加しています。
1.騒音データ
ノイズの多いデータは意味のないデータであり、この言葉は破損したデータの同義語としてよく使用されます。
1.ビニング:
- データの「近傍」(周囲の値) を調べることにより、序数データの値を平滑化します。局所的にスムーズ
2. 回帰:
- 関数 (回帰関数) をデータに当てはめ、データを平滑化します。
3. クラスタリング:
- 似たような値をクラスタ A にまとめる
4. その他:
- データ削減、離散化、概念階層など
1.1 ビニング
データの「近傍」(周囲の値) を調べることにより、序数データの値を平滑化します。局所的に滑らか。
- 分割: 等しい周波数、等しい幅
- スムーズ: ビンの平均を使用、ビンの中央値を使用、ビンの境界を使用 (ビン内の各データを置き換えるため)
- ビン内の最大値と最小値は、ビンの境界と見なされます。ビン内の各値は、最も近い境界値に置き換えられます。
1.2 平滑化データのビニング
1.3 騒音データ
1. 回帰:
関数 (回帰関数) をデータに当てはめ、データを平滑化します。
-
線形回帰
-
多重線形回帰
2. クラスタリング: 類似した値をクラスタにクラスタリングします。外れ値を検出する
ノイズの多いデータは有益です。
1.4 回帰 回帰
1.5 クラスタリング クラスタ分析
1.6 プロセスとしてのデータクリーニング
1.6.1 偏差検出
1.「メタデータ」を使用します。データに関するデータです。
- たとえば、各属性のデータ型は何ですか? 定義域とは何ですか?
2.コーディング形式:一貫性のない使用法と一貫性のないデータ表現があります
- 例: 日付「2015/12/08」および「08/12/2015」
3. フィールドのオーバーロード:
- 新しいプロパティの定義は、定義されたプロパティの未使用 (ビット) 部分に絞り込まれます。
4. 一意性ルール:
- 特定のプロパティのすべての値は、そのプロパティの他の値とは異なる必要があります。
5.継続ルール:
- 属性の最低値と最高値の間に欠損値はなく、すべての値も一意でなければなりません (例: テスト番号)
6. Null 値のルール:
- 空白、疑問符、特殊記号、またはその他の文字列を使用して null 値の条件 (たとえば、特定の属性の値を使用できない場合) を示し、そのような値をどのように処理するかを説明します。
1.6.2 データ変換(偏りの修正)
- データ クリーニング ツール: 簡単なドメインの知識 (住所の知識とスペル チェック) を使用して、データのエラーをチェックして修正します。これらのツールは、複数のデータ ソースからデータをクリーニングする際に、分析とあいまい一致の手法に依存しています。
- 数据审计工具:通过分析数据发现规则和联系,并检测违反这些条件的数据来发现偏差。
- 数据迁移工具:允许说明简单的变换。
- ETL(提取/变换/装入)工具:允许用户通过图形用户界面说明变换。
- 通常这些工具只支持有限的变换
1.6.3迭代
- 需要迭代执行偏差检测和数据变换(纠正偏差)这两步过程。
- -通常需要多次迭代才能达到满意的效果。
1.6.4 加强交互性
- 数据清理工具:
- kettle是一个开源的数据清理工具
- 开发数据变换操作规范说明语言
二. 数据集成和变换
- 数据集成合并多个数据源中的数据,存放在一个一致的数据库(如数据仓库)中。
- 源数据可能包括多个数据库,数据立方或一般文件。
- 数据变换将数据转换或统一成适合于挖掘的形式。
2.1 数据集成
1.实体识别
- 元数据可帮助避免错误
2.属性冗余与相关性分析-
- 相关分析
3.数据重复(元组冗余)
4.数据值冲突的检测与处理
- 表示、比例或编码不同
2.2 数据变换
1.平滑:去掉数据中的噪声。技术包括分箱、回归、聚类。
2.聚集Aggregation:对数据进行汇总或聚集。
3.数据泛化(概化):使用概念分层,用高层概念替换低层或“原始”数据。
4.规范化:将属性数据按比例缩放,使之落入一个小的特定区间。最小-最大、Z-Score、按小数定标规范化。
5.属性构造(特征构造):由给定的属性构造新的属性并添加到属性集中,以帮助挖掘过程。可以帮助提高准确率和对高维数据结构的理解。
数据立方体聚集
概念分层
2.3规范化
2.3.1 Min-Max 规范化(最小-最大规范化)
规范化公式:
2.3.2 Min-Max 规范化(最小-最大规范化)例子代码(红酒数据集)
1.事先准备,采用红酒数据集,将数据拿出:
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target
复制代码
2.支持向量机
from sklearn import svm
svm = svm.SVC()
复制代码
3.支持向量机 training score:
print("支持向量机 training score: ",svm.score(X,y))
svm.fit(wine_X,y)
复制代码
运行结果为:
6.手动让其进行Min-Max 规范化(最小-最大规范化):
wind_X=X.copy()
for i in range(13):
columu_X = X[:, i]
wind_X[:, i] = (columu_X-columu_X.min())/(columu_X.max()-columu_X.min())
print(wind_X)
复制代码
7.对照组,输出之前的训练得分:
svm.fit(X,y)
print("支持向量机 training score: ",svm.score(X,y))
复制代码
8.支持向量机归一化后 training score:
svm.fit(wind_X,y)
print("支持向量机归一化后 training score: ",svm.score(wind_X,y))
复制代码
9.结果:可以看出,对其改善很大。
2.3.4 缺点
1.若存在离群点,可能影响规范化
2. 正規化後に新しいデータを追加する場合、新しいデータが元のデータの間隔 [minA, max A] の外にある場合、「範囲外」エラーが発生します。
2.3.5 スコアの正規化 (ゼロ平均正規化)
z スコア正規化 (ゼロ平均正規化): 属性 A の値は、A の平均と標準偏差に基づいて正規化されます。
外れ値に鈍感
2.3.6 スコア正規化 (ゼロ平均正規化) サンプルコード (赤ワインデータセット)
1. 事前に準備し、赤ワインのデータ セットを使用して、データを取り出します。
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target
复制代码
2. サポート ベクター マシン
from sklearn import svm
svm = svm.SVC()
复制代码
3. モデルで列単位の正規化を使用します。
from sklearn import preprocessing
#数据预处理:按列归一化
wine_X=preprocessing.scale(X)
print(wine_X)
复制代码
4. 出力結果は次のとおりです。
5.列の正規化を手動で書く
wind_X=X.copy()
for i in range(13):
columu_X = X[:, i]
wind_X[:, i]=(columu_X-columu_X.mean())/columu_X.std()
print(wind_X)563
复制代码
6. 結果を表示します。