반응형

overthewire.org 문제 풀이 / Bandit Level 5 → Level 6

 

 

 

 

 

우선 inhere 디렉토리에서 ls 명령어를 입력해보면 maybehere00부터 maybehere19까지의 디렉터리가 있습니다. 

하나하나 들어가서 파일들을 찾는 것은 시간이 오래걸릴 듯 하여, find 명령어를 사용합니다. 

 

find 명령어에는 파일 크기를 필터링 할 수 있습니다. 

크기가 1033 byte이니깐, -size 옵션에 1033c를 입력해 필터를 걸고 파일을 찾습니다. 

이때 1033c의 c는 바이트를 나타냅니다. 

그러면 ./maybehere07 디렉터리의 .file2 파일만 결과로 출력됩니다. 

이 파일을 cat으로 내용을 확인해보면 패스워드가 있는 것을 볼 수 있습니다. 

 

overthewire.org/wargames/bandit

 

OverTheWire: Bandit

We're hackers, and we are good-looking. We are the 1%. Bandit The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, p

overthewire.org

 

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 4 → Level 5

 

 

 

 

ls로 inhere에 있는 파일 리스트를 보면, 10개의 파일이 있습니다. 

-file00부터 하나씩 보려고 하는데, 깨져있는 걸 볼 수 있습니다. 

file 명령어로 파일의 구성 정보를 확인합니다. 

 

그럼 -file07 파일은 ASCII text로 되어 있는 것을 확인할 수 있습니다 

-file07 파일을 cat 명령어로 읽어보면 패스워드가 있는 것을 볼 수 있습니다. 

 

overthewire.org/wargames/bandit

 

OverTheWire: Bandit

We're hackers, and we are good-looking. We are the 1%. Bandit The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, p

overthewire.org

 

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 3 → Level 4

 

 

 

inhere 폴더에 가서 ls를 명령어를 입력하면 아무 파일도 보이지 않습니다. 

ls의 -al 명령어를 이용하면 숨겨진 파일도 확인할 수 있습니다. 

cat으로 해당 파일을 열면 패스워드가 보여집니다.

 

overthewire.org/wargames/bandit

 

OverTheWire: Bandit

We're hackers, and we are good-looking. We are the 1%. Bandit The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, p

overthewire.org

 

반응형
반응형

파이썬 머신러닝 / k-최근접 이웃 알고리즘(KNN) 알아보기

 

k-최근접 이웃 알고리즘은 가장 간단한 지도학습 머신러닝 알고리즘으로 가장 가까운 훈련 데이터 포인트 하나를 최근접 이웃으로 찾아 예측합니다. 가장 가까운 이웃을 k개를 선택할 수 있고, 둘 이상의 이웃을 선택하였을 경우 레이블을 정하기 위해 더 많은 클래스를 레이블의 값으로 정합니다. 

 

간단하게 파이썬으로 k-최근접 이웃 알고리즘의 성능을 평가해보겠습니다. 

 

 

먼저 필요한 라이브러리를 가져옵니다. 

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt

 

분석을 위한 scikit-learn 라이브러리의 유방암에 대한 데이터셋을 가져오겠습니다. 

그리고 데이터는 학습 세트와 테스트 세트로 나누었습니다. 

cancer = load_breast_cancer()
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.3, stratify=cancer.target, random_state=100)

 

k-최근접 이웃의 수에 따라 train 세트와 test세트의 정확도를 살펴보기 위해 아래와 같이 변수를 생성하였습니다.

training_accuracy = []
test_accuracy = []
neighbors_settings = range(1, 101)

 

최근접 이웃의 수를 1부터 101까지 설정하여 학습 데이터를 가지고, 테스트 데이터의 성능을 평가해보겠습니다. 

for n_neighbors in neighbors_settings:
    clf = KNeighborsClassifier(n_neighbors=n_neighbors)
    clf.fit(x_train, y_train)
    training_accuracy.append(clf.score(x_train, y_train))
    test_accuracy.append(clf.score(x_test, y_test))

 

그리고 이것을 그래프로 그려보겠습니다. 

plt.plot(neighbors_settings, training_accuracy, label='train_accuracy')
plt.plot(neighbors_settings, test_accuracy, label='test_accuracy')
plt.ylabel('accuracy')
plt.xlabel('n_neighbors')
plt.legend()
plt.show()

 

이것을 실행해보면 아래 그래프가 출력됩니다. 

그래프로 봐서는 n_neighbors가 10정도일 때, train_accuracy와 test_accuracy가 어느 정도 높게 나오는 것을 볼 수 있습니다. 

 

 

 

전체 코드

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt

cancer = load_breast_cancer()
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.3, stratify=cancer.target, random_state=100)

training_accuracy = []
test_accuracy = []
neighbors_settings = range(1, 101)


for n_neighbors in neighbors_settings:
    clf = KNeighborsClassifier(n_neighbors=n_neighbors)
    clf.fit(x_train, y_train)
    training_accuracy.append(clf.score(x_train, y_train))
    test_accuracy.append(clf.score(x_test, y_test))

plt.plot(neighbors_settings, training_accuracy, label='train_accuracy')
plt.plot(neighbors_settings, test_accuracy, label='test_accuracy')
plt.ylabel('accuracy')
plt.xlabel('n_neighbors')
plt.legend()
plt.show()
반응형

+ Recent posts