찾다
기술 주변기기일체 포함지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝

정밀도-재현율 곡선에서는 동일한 점이 서로 다른 축으로 표시됩니다. 경고: 왼쪽의 첫 번째 빨간색 점(0% 재현율, 100% 정밀도)은 0개 규칙에 해당합니다. 왼쪽의 두 번째 점이 첫 번째 규칙입니다.

Skope-rules는 트리 모델을 사용하여 규칙 후보를 생성합니다. 먼저 몇 가지 의사결정 트리를 구축하고 루트 노드에서 내부 노드 또는 리프 노드까지의 경로를 규칙 후보로 고려합니다. 그런 다음 이러한 후보 규칙은 정밀도 및 재현율과 같은 사전 정의된 기준에 따라 필터링됩니다. 정밀도와 재현율이 임계값을 초과하는 항목만 유지됩니다. 마지막으로, 다양성이 충분한 규칙을 선택하기 위해 유사성 필터링이 적용됩니다. 일반적으로 Skope-rules는 각 근본 원인에 대한 기본 규칙을 학습하는 데 적용됩니다.

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝

프로젝트 주소: https://github.com/scikit-learn-contrib/skope-rules

  • Skope-rules는 3절 BSD에 따라 scikit-learn을 기반으로 구축된 Python 기계 학습 모듈입니다. 허가.
  • Skope-rules는 대상 카테고리를 "정의"하기 위한 논리적이고 해석 가능한 규칙을 학습하는 것, 즉 이 카테고리의 인스턴스를 높은 정확도로 감지하는 것을 목표로 합니다.
  • Skope 규칙은 의사결정 트리의 해석 가능성과 Random Forest의 모델링 기능 간의 균형입니다.

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝

schema

Installation

pip를 사용하여 최신 리소스를 얻을 수 있습니다:

pip install skope-rules

빠른 시작

SkopeRules는 논리적 규칙이 있는 클래스를 설명하는 데 사용할 수 있습니다:

from sklearn .datasets import load_iri s UFrom Skrules Import Skoperules

dataset = Load_iris ()
Feature_names = ['SEPAL_LENGTH', 'SEPAL_WIDTH', 'Petal_length', 'Petal_width'] KClf = Skoperules (MAX_DEPTH_DUPLICATINOTALOW = 2,
n_estimators 30,
Precision_min = 0.3 ,
call_min=0.1,
feature_names=feature_names)

idx의 경우 enumerate의 종(dataset.target_names):
X, y = 데이터 세트.data, 데이터 세트.target
clf.fit(X, y == idx)
rule = clf.rules_[0:3]
print("붓꽃에 대한 규칙", 종)
규칙의 규칙:
print(rule)
print()
print(20*'=')
print ()

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝참고:

다음 오류가 발생하는 경우:

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝해결책:

Python 가져오기 오류 정보: 'sklearn.externals'에서 'six' 이름을 가져올 수 없습니다. Yun Duojun이 유사한 오류를 찾았습니다. 스택 오버플로 질문: https://stackoverflow.com/questions/61867945/

해결책은 다음과 같습니다

import six

import sys

sys.modules['sklearn.externals.six'] = six
import mlrose

개인 테스트가 유효합니다!

SkopeRules는 "score_top_rules" 방법을 사용하는 경우 예측 변수로 사용할 수도 있습니다.

from sklearn.datasets import load_boston

from sklearn.metrics import Precision_recall_curve

from matplotlib import pyplot as plt
from skrules import SkopeRules

dataset = load_boston ( )
clf = SkopeRules(max_length_duplicatinotallow=None,
n_estimators=30,
정밀도_min=0.2,
presents_min=0.01,
feature_names=dataset.feature_names)

X, y = 데이터세트.데이터, 데이터세트.대상 > , y_train = X[:len(y)//2], y[:len(y)//2]
X_test, y_test = X[len(y)//2:], y[len(y)/ /2:]
clf.fit(X_train, y_train)
y_score = clf.score_top_rules(X_test) # 각 테스트 예시에 대한 위험 점수를 가져옵니다
precision, presents, _ = Precision_recall_curve(y_test, y_score)
plt.plot(recall , 정밀도)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision Recall curve')
plt.show()


실용 사례지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝

이 사례 표시 유명한 Titanic 데이터 세트에서 범위 규칙을 사용했습니다.

범위 규칙 적용 상황: ​​

  • 이진 분류 문제 해결
  • 해석 가능한 결정 규칙 추출

이 사례는 5개 부분으로 나뉩니다.

  • 관련 라이브러리 가져오기
  • 데이터 준비
  • 모델 학습(ScopeRules().score_top_rules() 메서드 사용)
  • "생존 규칙"에 대한 설명(SkopeRules().rules_property 사용)
  • 성능 분석(SkopeRules.predict_top_rules() 메소드 사용).

관련 라이브러리 가져오기

# skope-rules 가져오기
from skrules import SkopeRules

# 라이브러리 가져오기
pd로 팬더 가져오기
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier
from sklearn.model_selection import train_test_sp 조명
sklearn.tree에서 가져오기 DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, Precision_recall_curve
from matplotlib import cm
import numpy as np
from sklearn.metrics import 혼란_matrix
from IPython.display import display

# 타이타닉 데이터 가져오기
data = pd.read_csv('../data/titanic-train.csv')

데이터 준비

# 연령이 누락된 행 삭제
data = data.query('Age == Age')
# 변수 성별에 대한 인코딩 생성 Value
data['is Female'] = (data['Sex'] == 'female') * 1
# Unvaried Embarked는 인코딩된 값을 생성합니다
data = pd.concat(
[data,
pd.get_dummies(data.loc) [:,'Embarked'],
dummy_na=False,
prefix='Embarked',
prefix_sep='_')],
axis=1
)
# 사용하지 않는 변수 삭제
data = data.drop( ['이름 ', 'Ticket', 'Cabin',
'PassengerId', 'Sex', 'Embarked'],
axis = 1)
# 훈련 및 테스트 세트 생성
X_train, X_test, y_train, y_test = train_test_split(
data. drop(['Survived'], axis=1),
data['Survived'],
test_size=0.25, random_state=42)
feature_names = X_train.columns

print('열 이름은 ' + ' '입니다. Join(feature_names.tolist())+'.')
print('훈련 세트의 형태: ' + str(X_train.shape) + '.')

열 이름: Pclass Age SibSp Parch Fare
is Female Embarked_C Embarked_Q Embarked_S.
훈련 세트의 모양은 다음과 같습니다: (535, 9).

Model training

# 벤치마크 테스트를 위한 그래디언트 부스팅 분류기 훈련
gradient_boost_clf = GradientBoostingClassifier(random_state=42, n_estimators=30, max_length = 5)
gradient_boost_clf .fit(X_train, y_train)

# 벤치마킹을 위한 무작위 포레스트 분류기 훈련
random_forest_clf = RandomForestClassifier(random_state=42, n_estimators=30, max_length = 5)
random_forest_clf.fit(X_train , y_train)

# 의사결정 트리 훈련 벤치마킹을 위한 분류자
decision_tree_clf = DecisionTreeClassifier(random_state=42, max_length = 5)
decision_tree_clf.fit(X_train, y_train)

# skope-rules-boosting 분류 훈련
skope_rules_clf = SkopeRules(feature_names=feature_names, random_state= 42, n_추정자 =30,
Remember_min=0.05, Precision_min=0.9,
max_samples=0.7,
max_length_duplicatinotallow= 4, max_length = 5)
skope_rules_clf.fit(X _train, y_train)


# 예측 점수 계산
gradient_boost_scoring 그래디언트_boost_clf.predict_proba( X_test)[:, 1]
random_forest_scoring = random_forest_clf.predict_proba(X_test)[:, 1]
decision_tree_scoring = Decision_tree_clf.predict_proba(X_test )[:, 1]

skope_rules_scoring = skope_rules_clf.score_top_rules (n")

# 인쇄 this rule

rules_explanations = [

"3세 미만, 37세 미만 여성, 1등 또는 2등. "
"3세 이상의 여성은 1등석 또는 2등석으로 여행하며 요금이 26유로 이상입니다. "
"1등석 또는 2등석으로 여행하고 29유로 이상을 지불하는 여성. "
"39세 이상이며 1등석 또는 2등석으로 여행하는 여성입니다. "
]
print('가장 성능이 뛰어난 네 가지 "타이타닉 생존 규칙"은 다음과 같습니다:/n')
i_rule의 경우 enumerate(skope_rules_clf.rules_[:4])
print(rule[ 0])
의 규칙입니다. print('->'+rules_explanations[i_rule]+ 'n')

SkopeRules를 사용하여 9개의 규칙 만들기

최고의 4가지 "타이타닉 생존 규칙"은 다음과 같습니다:
Age 및 Pclass 37세 미만, 1등급 또는 2등급

Age > 26.125
;= 2.5 및 is여성 > 0.5
-> 1등석 또는 2등석으로 여행하고 26유로 이상을 지불하는 여성.

요금 > 29.356250762939453
및 Pclass 0.5
-> 1등석 또는 2등석 탑승, 여성 요금 29유로 이상.

나이 > 38.5 및 P클래스 및 여성 > 0.5
-> 39세 이상이며 1등석 또는 2등석으로 여행하는 여성.

def Compute_y_pred_from_query(X, 규칙):
score = np.zeros(X.shape[0])
X = X.reset_index(drop=True)
score[list(X.query(rule).index)] = 1
return(점수)

def Compute_performances_from_y_pred(y_true, y_pred, index_name='default_index'):
df = pd.DataFrame(data=
{
'precision':[sum(y_true * y_pred)/sum(y_pred) )],
'recall':[sum(y_true * y_pred)/sum(y_true)]
},
index=[index_name],
columns=['precision', 'recall']
)
return(df)

def Compute_train_test_query_performances(X_train, y_train, = pd.concat([
performances ,
compute_performances_from_y_pred(y_train, y_train_pred, 'train_set')],
axis=0)
performances = pd.concat([
performances,
compute_performance s_from_y_pred( y_test, y_test_pred, 'test_set')],
axis=0)

return(performances)


print('정밀도 = 0.96은 규칙에 의해 식별된 사람 중 96%가 생존자임을 의미합니다.')
print(' 재현율 = 0.12는 규칙에 따라 식별된 생존자가 전체 생존자의 12%를 차지한다는 것을 의미합니다.')

for i in range(4):
print('Rule '+str(i+1)+':')
display(compute_train_test_query_performances(X_train, y_train,
X_test, y_test,
skope_rules_clf.rules_[i][ 0])
)

Precision = 0.96은 규칙에 의해 결정된 사람들 중 96%가 생존자임을 의미합니다.
재현율 = 0.12는 규칙에 따라 식별된 생존자가 전체 생존자의 12%를 차지한다는 의미입니다.



모델 성능 테스트

defplot_titanic_scores(y_true, Score_with_line=[], Score_with_points=[],

labels_with_line=['Gradient Boosting', 'Random Forest', 'Decision Tree'],지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝labels_with_points=[ 'skope-rules']):

gradient = np.linspace(0, 1, 10)

color_list = [ 그래디언트의 x에 대한 cm.tab10(x) ]

fig, 축 = plt.subplots(1, 2, figsize=(12, 5),
sharex=True, sharey=True)
ax = axis[0]
n_line = 0
i_score의 경우 열거된 점수(scores_with_line):
n_line = n_line + 1
fpr, tpr, _ = roc_curve(y_true, 점수)
ax.plot(fpr, tpr, linestyle='-.', c=color_list[i_score], lw=1, label=labels_with_line[i_score])
i_score의 경우, 열거된 점수( Score_with_points):
fpr, tpr, _ = roc_curve(y_true, 점수)
ax.scatter(fpr[:-1], tpr[:-1], c=color_list[n_line + i_score], s=10, label= labels_with_points[i_score])
ax.set_title("ROC", fnotallow=20)
ax.set_xlabel('거짓 긍정률', fnotallow=18)
ax.set_ylabel('참 긍정률(재현율)', fnotallow=18 )
ax.legend(loc='lower center', fnotallow=8)

ax = axis[1]
n_line = 0
i_score의 경우 열거 점수(scores_with_line):
n_line = n_line + 1
정밀도, 재현율 , _ = 정밀도_recall_curve(y_true, 점수)
ax.step(recall, 정밀도, linestyle='-.', c=color_list[i_score], lw=1, where='post', label=labels_with_line[i_score])
i_score의 경우 열거형 점수(scores_with_points):
precision, presents, _ = 정밀도_recall_curve(y_true, 점수)
ax.scatter(recall, 정밀도, c=color_list[n_line + i_score], s=10, label=labels_with_points[i_score ])
ax.set_title("정밀도-재현율", fnotallow=20)
ax.set_xlabel('재현율(참양성률)', fnotallow=18)
ax.set_ylabel('정밀도', fnotallow=18)
ax .legend(loc='하단 중앙', fnotallow=8)
plt.show()

plot_titanic_scores(y_test,
scores_with_line=[gradient_boost_scoring, random_forest_scoring,cision_tree_scoring],
scores_with_points=[skope_rules_scoring]
)




ROC 곡선에서 각 빨간색 점은 활성화된 규칙(skope-rules에서) 수에 해당합니다. 예를 들어 가장 낮은 점수는 1개의 규칙(최고)의 결과 점수입니다. 두 번째로 낮은 지점은 2개의 규칙 결과 지점입니다.
정밀도-재현율 곡선에서는 동일한 점이 다른 축으로 표시됩니다. 경고: 왼쪽의 첫 번째 빨간색 점(0% 재현율, 100% 정밀도)은 0개 규칙에 해당합니다. 왼쪽의 두 번째 점이 첫 번째 규칙입니다.

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝이 예에서 몇 가지 결론을 도출할 수 있습니다.

  • skope-rule은 의사결정 트리보다 더 나은 성능을 발휘합니다.
  • skope-rules는 랜덤 포레스트/그라디언트 부스팅(이 예에서는)과 유사하게 수행됩니다.
  • 4가지 규칙을 사용하면 매우 좋은 성능(61% 재현율, 94% 정밀도)을 얻을 수 있습니다(이 예에서는).

n_rule_chosen = 4
y_pred = skope_rules_clf.predict_top_rules(X_test, n_rule_chosen)

print('발견된 '+str(n_rule_chosen)+' 규칙으로 도달한 성능은 다음과 같습니다.')
compute_performances_from_y_pred(y_test, y_pred, ' test_set')

지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝

predict_top_rules(new_data, n_r) 메소드는 첫 번째 n_r 범위 규칙 규칙을 포함하는 new_data의 예측을 계산하는 데 사용됩니다.

위 내용은 지식을 늘려보세요! 논리적 규칙을 사용한 머신러닝의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
외삽에 대한 포괄적 인 가이드외삽에 대한 포괄적 인 가이드Apr 15, 2025 am 11:38 AM

소개 매일 몇 주 만에 작물의 진행 상황을 관찰하는 농부가 있다고 가정합니다. 그는 성장률을보고 몇 주 안에 식물이 얼마나 키가 커질 수 있는지에 대해 숙고하기 시작합니다. Th

소프트 AI의 부상과 오늘날 비즈니스의 의미소프트 AI의 부상과 오늘날 비즈니스의 의미Apr 15, 2025 am 11:36 AM

Soft AI-대략적인 추론, 패턴 인식 및 유연한 의사 결정을 사용하여 구체적이고 좁은 작업을 수행하도록 설계된 AI 시스템으로 정의 된 것은 모호성을 수용하여 인간과 같은 사고를 모방하려고합니다. 그러나 이것이 바이러스의 의미는 무엇입니까?

AI 국경을위한 진화 보안 프레임 워크AI 국경을위한 진화 보안 프레임 워크Apr 15, 2025 am 11:34 AM

클라우드 컴퓨팅이 클라우드 네이티브 보안 도구로의 전환이 필요했기 때문에 AI는 AI의 고유 한 요구를 위해 특별히 설계된 새로운 유형의 보안 솔루션을 요구합니다. 클라우드 컴퓨팅 및 보안 수업의 상승이 배웠습니다 th

3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!Apr 15, 2025 am 11:33 AM

기업가와 AI 및 생성 AI를 사용하여 비즈니스를 개선합니다. 동시에, 모든 기술과 마찬가지로 생성 AI를 기억하는 것이 중요합니다. 앰프는 앰프입니다. 엄격한 2024 연구 o

Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Apr 15, 2025 am 11:32 AM

임베딩 모델의 힘 잠금 해제 : Andrew Ng의 새로운 코스에 대한 깊은 다이빙 기계가 완벽한 정확도로 질문을 이해하고 응답하는 미래를 상상해보십시오. 이것은 공상 과학이 아닙니다. AI의 발전 덕분에 R이되었습니다

대형 언어 모델 (LLMS)에서 환각이 불가피합니까?대형 언어 모델 (LLMS)에서 환각이 불가피합니까?Apr 15, 2025 am 11:31 AM

대형 언어 모델 (LLM) 및 환각의 피할 수없는 문제 Chatgpt, Claude 및 Gemini와 같은 AI 모델을 사용했을 것입니다. 이들은 대규모 텍스트 데이터 세트에 대해 교육을받은 강력한 AI 시스템의 대형 언어 모델 (LLM)의 예입니다.

60% 문제 - AI 검색이 트래픽을 배출하는 방법60% 문제 - AI 검색이 트래픽을 배출하는 방법Apr 15, 2025 am 11:28 AM

최근의 연구에 따르면 AI 개요는 산업 및 검색 유형에 따라 유기 트래픽이 15-64% 감소 할 수 있습니다. 이러한 급격한 변화로 인해 마케팅 담당자는 디지털 가시성에 관한 전체 전략을 재고하게합니다. 새로운

AI R & D의 중심에 인간 번성을하는 MIT Media LabAI R & D의 중심에 인간 번성을하는 MIT Media LabApr 15, 2025 am 11:26 AM

Elon University의 Digital Future Center를 상상 한 최근 보고서는 거의 300 명의 글로벌 기술 전문가를 조사했습니다. 결과적인 보고서 인‘2035 년에 인간이되는 것’은 대부분 AI 시스템의 심화가 T에 대한 우려가 있다고 결론지었습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.