8000 Machine learning. · jsphdnl/practice-python@46f03eb · GitHub
[go: up one dir, main page]

Skip to content

Commit 46f03eb

Browse files
committed
Machine learning.
1 parent 060dbc8 commit 46f03eb

File tree

4 files changed

+122
-0
lines changed

4 files changed

+122
-0
lines changed

machine-learning/fruit-classify.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def classify(to_classify):
3636

3737
def main():
3838
to_classify = [
39+
[160, TEXTURE_BUMPY],
3940
[145, TEXTURE_BUMPY],
4041
[120, TEXTURE_SMOOTH],
4142
[100, TEXTURE_BUMPY],

machine-learning/iris.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import numpy as np
2+
from sklearn import tree
3+
from sklearn.datasets import load_iris
4+
5+
6+
def main():
7+
iris = load_iris()
8+
9+
print(iris.feature_names)
10+
print(iris.target_names)
11+
12+
# print(iris.data[0])
13+
# print(iris.target[0])
14+
15+
test_idx = [0, 50, 100]
16+
17+
train_target = np.delete(iris.target, test_idx)
18+
train_data = np.delete(iris.data, test_idx, axis=0)
19+
20+
test_target = iris.target[test_idx]
21+
test_data = iris.data[test_idx]
22+
23+
# print(test_target)
24+
# print(test_data)
25+
26+
clf = tree.DecisionTreeClassifier()
27+
clf.fit(train_data, train_target)
28+
29+
print('actual:', test_target)
30+
print('predicted:', clf.predict(test_data))
31+
32+
33+
if __name__ == '__main__':
34+
main()
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import numpy as np
2+
# from scipy.spatial import distance
3+
from sklearn import datasets
4+
from sklearn.model_selection import train_test_split
5+
from sklearn.neighbors import KNeighborsClassifier
6+
from sklearn import metrics
7+
8+
9+
class KNNClassifier(object):
10+
def __init__(self):
11+
self.X_train = None
12+
self.y_train = None
13+
14+
def euc_distance(self, a, b):
15+
return np.linalg.norm(a-b)
16+
# return distance.euclidean(a, b)
17+
18+
def closest(self, row):
19+
"""
20+
Returns the label corresponding to the single closest training example.
21+
This is a k=1 nearest neighbor(s) implementation.
22+
:param row:
23+
:return:
24+
"""
25+
dist = [self.euc_distance(row, trainer) for trainer in self.X_train]
26+
best_index = dist.index(min(dist))
27+
28+
return self.y_train[best_index]
29+
30+
def fit(self, training_data, training_labels):
31+
self.X_train = training_data
32+
self.y_train = training_labels
33+
34+
def predict(self, to_classify):
35+
predictions = []
36+
for row in to_classify:
37+
label = self.closest(row)
38+
predictions.append(label)
39+
40+
return predictions
41+
42+
iris = datasets.load_iris()
43+
44+
X = iris.data
45+
y = iris.target
46+
47+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
48+
49+
classifier = KNeighborsClassifier() # k=5 by default
50+
# classifier = KNNClassifier()
51+
classifier.fit(X_train, y_train)
52+
53+
# print(y_train)
54+
55+
results = classifier.predict(X_test)
56+
57+
score = metrics.accuracy_score(y_test, results)
58+
59+
print("Accuracy: {0:f}".format(score))

machine-learning/neural-net.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from sklearn import metrics
2+
from sklearn.model_selection import train_test_split
3+
import tensorflow as tf
4+
from tensorflow.contrib import learn
5+
import logging
6+
7+
8+
def main():
9+
logging.getLogger().setLevel(logging.INFO)
10+
11+
iris = learn.datasets.load_iris()
12+
13+
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
14+
15+
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
16+
17+
# Build a neural network with 3 hidden layers: 10, 20, 10 units respectively
18+
classifier = learn.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3, feature_columns=feature_columns)
19+
20+
classifier.fit(X_train, y_train, steps=2000)
21+
22+
score = metrics.accuracy_score(y_test, classifier.predict(X_test))
23+
24+
print("Accuracy: {0:f}".format(score))
25+
26+
27+
if __name__ == '__main__':
28+
main()

0 commit comments

Comments
 (0)
0