Linear Regression
Cost 함수
hyper plain의 데이터를 보여주고, w랑 b 값은 무엇일까요?
코딩해서 w, b값 찾기
x_train = torch.FloatTensor([[1,2], [3,2], [3,7], [1,1], [1,0]])
y_train = torch.FloatTensor([[4], [8], [23], [1], [-2]])
w = torch.randn(2, 1)
b = torch.randn(1)
lr = 0.01
for epoch in range(3001):
w.requires_grad_(True)
b.requires_grad_(True)
h = x_train @ w + b
#x와 y가 1차원일때는 @ -> *로 바꾸기
cost = ((h - y_train) ** 2).mean()
cost.backward()
with torch.no_grad():
w = w - lr * w.grad
b = b - lr * b.grad
if epoch % 100 == 0:
print(epoch, cost.item(), w.squeeze(), b)
Logistic Regression
이진 분류 문제를 위해 활용했다
Sigmoid 함수 = 1 / 1 + e^(-x)
새로운 cost function → 바이너리 크로스 엔트로피 → 매끄러운 곡선이 나옴
각각 어떤 cost 함수가 사용되는지, 계산하는 방법도 알고 있기
Cost 함수
Softmax Regression
KNN
Decision Trees
분류 문제, 회귀 문제 모두 사용 가능
데이터 주고, gini impurity가 몇인지, 그리고 어떤 애가 베스트인지
def gini(self, y):
n_samples = len(y)
n_samples_per_class = np.bincount(y)
gini = 1.0
for i in range(len(n_samples_per_class)):
gini -= (n_samples_per_class[i] / n_samples) ** 2
return gini
numeric data / rank data
몇으로 나눴을 때 gini impurity가 몇이며 ~
데이터 전처리 조건 주고, 전처리 시행해라
age_mean = train["Age"].mean()
train["Age"] = train["Age"].fillna(age_mean)
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']
X = train[features]
X = pd.get_dummies(X)
y = train['Survived']
Random Forest
K means Clustering