Answer for your questions:
1) how do I convert the race into numbers to make my model more accurate?
-> I think answer lies in which tool you are using for analysis. Most of the tool have facility to convert attributes/factor in appropriate inputs. To explain your first question you can refer following link:
You can find your answer precisely here: http://www.ats.ucla.edu/stat/r/dae/logit.htm
It's self-explanatory article on admission based on GPA and ranks.
I am just recreating example from there. Tool used in this blog is R, freeware statistical analysis tool.
Data would look like this:
## admit gre gpa rank
## 1 0 380 3.61 3
## 2 1 660 3.67 3
## 3 1 800 4.00 1
## 4 1 640 3.19 4
## 5 0 520 2.93 4
## 6 1 760 3.00 2
Admit is output, 1 means student got admission. Now lets make rank as category:
mydata$rank <- factor(mydata$rank)
You can use other input into factor/category using above method. Now we will prepare a regression model for above table.
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
Above function will prepare a logistic regression model where we are checking whether admission depends on GRE,GPA or rank. Using summary function you get see the results.
summary(mylogit)
2) How do I find which factor make the most contribution to estimate students final GPA, so I can put more weight on it?
-> You don't have to give weight before hand, regression table will give you weight (co-efficient) for each input along with its statistical significance.
I hope I have cleared your answer.