Skip to content

Instantly share code, notes, and snippets.

@NickDiMucci
Last active March 12, 2018 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NickDiMucci/04ece29f21c06259febd361cf0a88dfa to your computer and use it in GitHub Desktop.
Save NickDiMucci/04ece29f21c06259febd361cf0a88dfa to your computer and use it in GitHub Desktop.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as p
# Data source https://www.kaggle.com/lazyjustin/pubgplayerstats/data
colnames = ['player_name','tracker_id','solo_KillDeathRatio','solo_WinRatio','solo_TimeSurvived','solo_RoundsPlayed','solo_Wins','solo_WinTop10Ratio','solo_Top10s','solo_Top10Ratio','solo_Losses','solo_Rating','solo_BestRating','solo_DamagePg','solo_HeadshotKillsPg','solo_HealsPg','solo_KillsPg','solo_MoveDistancePg','solo_RevivesPg','solo_RoadKillsPg','solo_TeamKillsPg','solo_TimeSurvivedPg','solo_Top10sPg','solo_Kills','solo_Assists','solo_Suicides','solo_TeamKills','solo_HeadshotKills','solo_HeadshotKillRatio','solo_VehicleDestroys','solo_RoadKills','solo_DailyKills','solo_WeeklyKills','solo_RoundMostKills','solo_MaxKillStreaks','solo_WeaponAcquired','solo_Days','solo_LongestTimeSurvived','solo_MostSurvivalTime','solo_AvgSurvivalTime','solo_WinPoints','solo_WalkDistance','solo_RideDistance','solo_MoveDistance','solo_AvgWalkDistance','solo_AvgRideDistance','solo_LongestKill','solo_Heals','solo_Revives','solo_Boosts','solo_DamageDealt','solo_DBNOs','duo_KillDeathRatio','duo_WinRatio','duo_TimeSurvived','duo_RoundsPlayed','duo_Wins','duo_WinTop10Ratio','duo_Top10s','duo_Top10Ratio','duo_Losses','duo_Rating','duo_BestRating','duo_DamagePg','duo_HeadshotKillsPg','duo_HealsPg','duo_KillsPg','duo_MoveDistancePg','duo_RevivesPg','duo_RoadKillsPg','duo_TeamKillsPg','duo_TimeSurvivedPg','duo_Top10sPg','duo_Kills','duo_Assists','duo_Suicides','duo_TeamKills','duo_HeadshotKills','duo_HeadshotKillRatio','duo_VehicleDestroys','duo_RoadKills','duo_DailyKills','duo_WeeklyKills','duo_RoundMostKills','duo_MaxKillStreaks','duo_WeaponAcquired','duo_Days','duo_LongestTimeSurvived','duo_MostSurvivalTime','duo_AvgSurvivalTime','duo_WinPoints','duo_WalkDistance','duo_RideDistance','duo_MoveDistance','duo_AvgWalkDistance','duo_AvgRideDistance','duo_LongestKill','duo_Heals','duo_Revives','duo_Boosts','duo_DamageDealt','duo_DBNOs','squad_KillDeathRatio','squad_WinRatio','squad_TimeSurvived','squad_RoundsPlayed','squad_Wins','squad_WinTop10Ratio','squad_Top10s','squad_Top10Ratio','squad_Losses','squad_Rating','squad_BestRating','squad_DamagePg','squad_HeadshotKillsPg','squad_HealsPg','squad_KillsPg','squad_MoveDistancePg','squad_RevivesPg','squad_RoadKillsPg','squad_TeamKillsPg','squad_TimeSurvivedPg','squad_Top10sPg','squad_Kills','squad_Assists','squad_Suicides','squad_TeamKills','squad_HeadshotKills','squad_HeadshotKillRatio','squad_VehicleDestroys','squad_RoadKills','squad_DailyKills','squad_WeeklyKills','squad_RoundMostKills','squad_MaxKillStreaks','squad_WeaponAcquired','squad_Days','squad_LongestTimeSurvived','squad_MostSurvivalTime','squad_AvgSurvivalTime','squad_WinPoints','squad_WalkDistance','squad_RideDistance','squad_MoveDistance','squad_AvgWalkDistance','squad_AvgRideDistance','squad_LongestKill','squad_Heals','squad_Revives','squad_Boosts','squad_DamageDealt','squad_DBNOs']
data = p.read_csv('C:/workspace/MachineLearning/PUBG-Linear-Regression/data/PUBG_Player_Statistics.csv', names=colnames)
x_data = data.solo_HeadshotKills.tolist()
y_data = data.solo_Wins.tolist()
# Remove the column headers
x_data.pop(0)
y_data.pop(0)
learning_rate = 0.01
training_epochs = 5
display_step = 1
x_train = np.asarray(x_data, dtype="f8")
y_train = np.asarray(y_data, dtype="f8")
n_samples = x_train.shape[0]
X = tf.placeholder(tf.float64)
Y = tf.placeholder(tf.float64)
# Set model weights
W = tf.Variable(np.random.randn(), name="weight", dtype=tf.float64)
b = tf.Variable(np.random.randn(), name="bias", dtype=tf.float64)
# Construct a linear model
pred = tf.add(tf.multiply(X, W), b)
# Mean squared error
cost = tf.reduce_sum(tf.pow(Y-pred, 2))/(2*n_samples)
# Gradient descent
# Note, minimize() knows to modify W and b because Variable objects are trainable=True by default
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for epoch in range(training_epochs):
for(x, y) in zip(x_train, y_train):
sess.run(optimizer, feed_dict={X: x, Y: y})
# Display logs per epoch step
if (epoch+1) % display_step == 0:
c = sess.run(cost, feed_dict={X: x_train, Y:y_train})
print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
"W=", sess.run(W), "b=", sess.run(b))
print("Optimization Finished!")
training_cost = sess.run(cost, feed_dict={X: x_train, Y: y_train})
print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')
# Graphic display
plt.plot(x_train, y_train, 'ro', label='Original data')
plt.plot(x_train, sess.run(W) * x_train + sess.run(b), label='Fitted line')
plt.legend()
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment