R中的神经网络

时间:2016-02-01 15:08:19

标签: r

嗨我想在R中使用神经网络函数,所以我可以使用其余变量预测整数结果(含义)。 这是我用过的代码:

ind<-sample(1:nrow(Data),6463,replace=FALSE)

Train<-Data[ind,]

Test<-Data[-ind,]

m <- model.matrix(
  ~meaning + 
    firstLevelAFFIRM + firstLevelDAT.PRSN + firstLevelMODE + 
    firstLevelO.DEF + firstLevelO.INDIV + firstLevelS.AGE.INDIV + 
    secondLevelV.BIN + secondLevelWord1 + secondLevelWord2 + 
    secondLevelWord3 + secondLevelWord4 + thirdLevelP.TYPE,
  data = Train[,-1])  #(the first column is ID , i am not going to use it)

PredictorVariables <- paste("m[," , 3:ncol(m),"]" ,sep="")

Formula <- formula(paste("meaning ~ ", paste(PredictorVariables, collapse=" + ")))

net <- neuralnet(Formula,data=m, hidden=3, threshold=0.05)

m.test < -model.matrix(
  ~meaning + 
    firstLevelAFFIRM + firstLevelDAT.PRSN + firstLevelMODE + 
    firstLevelO.DEF + firstLevelO.INDIV + firstLevelS.AGE.INDIV + 
    secondLevelV.BIN + secondLevelWord1 + secondLevelWord2 + 
    secondLevelWord3 + secondLevelWord4 + thirdLevelP.TYPE,
  data = Test[,-1])

net.results <- compute(net, m.test[,-c(1,2)]) #(first column is ID and the second one is the outcome that i am trying to predict)

output<-cbind(round(net.results$net.result),Test$meaning)

mean(round(net.results$net.result)!=Test$meaning)

我将从神经网络学习的数据中提取2/3,其余的 进行测试

import android.app.FragmentManager;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
public class Principal_eng extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.principal_eng);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        /*
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        */
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

    }
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        FragmentManager fr = getFragmentManager();
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.ceramicas) {
            fr.beginTransaction()
                    .replace(R.id.content_main, new Frag1() )//Here i get an error
                    .commit();
        } else if (id == R.id.tijolos) {
            fr.beginTransaction()
                    .replace(R.id.content_main, new Frag2())
                    .commit();
        } else if (id == R.id.ohms) {

        } else if (id == R.id.nav_send) {

        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

我得到的错误分类大约是0.01,这很好,但我的问题是为什么我得到的结果(net.results $ net.result)不是整数?

1 个答案:

答案 0 :(得分:1)

我认为你的输出是线性的。尝试设置linear.output = FALSE

net <- neuralnet(Formula, data = m, hidden = 3, threshold = 0.05, linear.output = FALSE)