데이터 사이의 연관된 규칙을 찾는 방법
연관 규칙 - 특정 사건 발생 시 함께 자주 발생하는 다른 사건의 규칙(Rule)
지지도(Support)
신뢰도(Confidence)
향상도(Lift)
1. Read Data_Set and Preprocessing
DF.head(3)
1-1. 데이터 정보 확인
DF_1 = DF[['order_id', 'item_name']]
DF_1.order_id.unique().shape, DF_1.item_name.unique().shape
((1834,), (50,))
order_ID = list(DF_1.order_id.unique())
order_ID[:10], order_ID[-10:]
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834])
item_NAME = list(DF_1.item_name.unique())
item_NAME[:5], item_NAME[-5:]
1-2. Preprocessing
orderItems = [[] for i in range(1835)]
len(orderItems)
1835
num = 0
for i in DF_1.item_name :
orderItems[DF_1.order_id[num]].append(i)
num = num + 1
orderItems[:5], orderItems[-5:]
#첫 번째 빈 리스트 제거 및 중복 아이템 단일화
orderItems.pop(0)
num = 0
for i in orderItems :
orderItems[num] = list(set(orderItems[num]))
num = num + 1
orderItems[:5], orderItems[-5:]
2. TransactionEncoder( )
#Transaction 구조 변환
from mlxtend.preprocessing import TransactionEncoder
TSE = TransactionEncoder()
Transac_Array = TSE.fit_transform(orderItems)
#pandas DataFrame 구조 변환
order_DF = pd.DataFrame(Transac_Array, columns = TSE.columns_)
order_DF.head()
order_DF.shape
(1834, 50)
3. apropri( )
from mlxtend.frequent_patterns import apriori
frequent_itemsets = apriori(order_DF,
min_support = 0.05,
use_colnames = True,
max_len = None)
frequent_itemsets
4. association_rules( )
4-1. 지지도(support)가 최소 0.05 이상인 연관관계 출력
from mlxtend.frequent_patterns import association_rules
association_rules(frequent_itemsets,
metric = 'support',
min_threshold = 0.05)
4-2. 신뢰도(confidence)가 최소 0.3 이상인 연관관계 출력
association_rules(frequent_itemsets,
metric = 'confidence',
min_threshold = 0.3)
4-3. 향상도(support)가 최소 0.1 이상인 연관관계 출력
association_rules(frequent_itemsets,
metric = 'lift',
min_threshold = 0.1)
지도학습(Supervised Learning) (1) | 2024.09.29 |
---|---|
Machine Learning (1) | 2024.09.28 |
K-평균 군집(K-means Clustering) 2 (0) | 2022.06.09 |
K-평균 군집(K-means Clustering) 1 (1) | 2022.06.09 |
Random Forest (0) | 2022.06.08 |