Raw Data
라벨링이 되어있지 않음
Labeled Data
실시간 데이터가 아니라 정확도가 낮음
def html_num_whitespace(soup):
try:
# soup > body > text > count
NullCount = soup.body.text.count(' ')
return float(NullCount)
except:
return 0.0
NullCount = soup.body.text.count(' ')
def html_num_characters(soup):
try:
#soup > body > text
bodyLen = len(soup.body.text)
return float(bodyLen)
except:
return 0.0
다음 코드와
def html_num_whitespace(soup):
try:
# soup > body > text > count
NullCount = soup.body.text.count(' ')
return float(NullCount)
except:
return 0.0
- html_num_characters 함수는 <body> 태그 내의 모든 문자를 계산합니다(공백, 구두점, 문자 등 모두 포함). 이 함수는 텍스트의 총 길이를 파악하는 데 사용됩니다.
- html_num_whitespace 함수는 <body> 태그 내의 텍스트에서 공백만을 대상으로 계산합니다. 이는 텍스트의 서식 및 구조를 분석하는 데 유용할 수 있습니다.
def html_link_in_script(soup):
numOfLinks = len(soup.findAll('script', {"src": True}))
numOfLinks += len(soup.findAll('script', {"href": True}))
return float(numOfLinks)
데이터는 하나의 프로세스로 처리하기 어려움 따라서, 병렬로 처리하는 것을 고려
데이터 분리
X = df.iloc[:,0:len(df.columns)-1].values
y = df.iloc[:,len(df.columns)-1].values
# train_test_split 사용
train_x, val_x, train_y, val_y = train_test_split(X, y,test_size=0.3,random_state=2021)

confution matrix활용 함수
def plot_confusion_matrix(ax, matrix, labels = ['malicious','benign'], title='Confusion matrix', fontsize=9):
ax.set_xticks([x for x in range(len(labels))])
ax.set_yticks([y for y in range(len(labels))])
# Place labels on minor ticks
ax.set_xticks([x + 0.5 for x in range(len(labels))], minor=True)
ax.set_xticklabels(labels, rotation='90', fontsize=fontsize, minor=True)
ax.set_yticks([y + 0.5 for y in range(len(labels))], minor=True)
ax.set_yticklabels(labels[::-1], fontsize=fontsize, minor=True)
# Hide major tick labels
ax.tick_params(which='major', labelbottom='off', labelleft='off')
# Finally, hide minor tick marks
ax.tick_params(which='minor', width=0)
# Plot heat map
proportions = [1. * row / sum(row) for row in matrix]
ax.pcolor(np.array(proportions[::-1]), cmap=plt.cm.Blues)
# Plot counts as text
for row in range(len(matrix)):
for col in range(len(matrix[row])):
confusion = matrix[::-1][row][col]
if confusion != 0:
ax.text(col + 0.5, row + 0.5, int(confusion),
fontsize=fontsize,
horizontalalignment='center',
verticalalignment='center')
# Add finishing touches
ax.grid(True, linestyle=':')
ax.set_title(title, fontsize=fontsize)
ax.set_xlabel('prediction', fontsize=fontsize)
ax.set_ylabel('actual', fontsize=fontsize)
plt.show()
배깅과 부스팅의 차이

외워야 할 부분
confusion matrix
confusion = confusion_matrix(val_y, abc_pred)
fig, ax = plt.subplots(figsize=(10, 3))
plot_confusion_matrix(ax, confusion, fontsize=30)
가중치 확인
# feature_importances_ 활용 Feature별 가중치 확인
plt.figure(figsize=(20, 12))
plt.barh(y=Train_Data.columns[:-1],
width = rfc.feature_importances_)
plt.show()
plt.show()
'Tech Stack > AICE - Associate' 카테고리의 다른 글
| AICE - Associate 정리 (0) | 2024.01.26 |
|---|---|
| AICE - Associate - 7 딥러닝 모델링 (0) | 2024.01.19 |
| AICE - Associate - 7 머신러닝 모델링 (0) | 2024.01.18 |
| AICE - associate - 5 데이터 전처리 (0) | 2024.01.16 |
| AICE - associate - 4 pandas 2 (0) | 2024.01.15 |